Вы можете поступить иначе, создав объект с ключами enum:
enum SomethingKeys {
red = "red",
blue= "blue",
green= "green",
}
type ISomething= Record<SomethingKeys, string>
const a: ISomething = {
[SomethingKeys.blue]: 'blue',
[SomethingKeys.red]: 'red',
[SomethingKeys.green]: 'green',
}
Но я думаю, что вам действительно нужен не enum, а объединенный тип ключей, который вы определяете с помощью keyof
, Подумайте:
interface ISomething {
red: string;
blue: string;
green: string;
}
type Keys = keyof ISomething; // "red" | "blue" | "green"
И когда вы объявляете себя новичком ie, со строковыми литеральными символами все в порядке. Вам не нужны перечисления.
Если у вас есть Keys
, вы можете использовать их также для создания других типов
// new object with keys of the original one
type OtherTypeWithTheSameKeys = Record<Keys, number> // type with keys of type Keys
const a: OtherTypeWithTheSameKeys = {
blue: 1,
green: 2,
red: 3
}