我有一个接口:
interface ISomething {
red: string;
blue: string;
green: string;
}
可以定义一个枚举来表示接口中的键吗?
我想要像这样的结果:
enum SomethingKeys {
red = "red",
blue= "blue",
green= "green",
}
提示:我是ts的新手,如果问题不正确请谅解。
我有一个接口:
interface ISomething {
red: string;
blue: string;
green: string;
}
可以定义一个枚举来表示接口中的键吗?
我想要像这样的结果:
enum SomethingKeys {
red = "red",
blue= "blue",
green= "green",
}
提示:我是ts的新手,如果问题不正确请谅解。
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',
}
但我认为你真正需要的不是枚举,而是通过 keyof
定义的联合类型。考虑:
interface ISomething {
red: string;
blue: string;
green: string;
}
type Keys = keyof ISomething; // "red" | "blue" | "green"
作为新手,您可以使用字符串常量联合。您不需要枚举。
当您拥有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
}