typescript - 打字稿:来自接口键的枚举
问题描述
我有一个界面:
interface ISomething {
red: string;
blue: string;
green: string;
}
是否可以定义 Enum 来表示接口中的键?
我想得到这样的结果:
enum SomethingKeys {
red = "red",
blue= "blue",
green= "green",
}
ps:我是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
}
推荐阅读
- r - 计算两点之间所有可能的斜率
- php - 启用错误 php.ini - wamp
- django - Django:将 CreateView 添加到相关模型的详细视图中
- twitter-bootstrap - Bootstrap 4 - 将元素与其容器底部对齐
- angular - Angular2中文件的DOM粘贴事件
- python - 在 R 包中编译外部库
- html - 使用 CSS 仅选择 div 的子项,但不选择孙子项
- javascript - 如何在 Mocha 异步单元测试中使用 afterEach?
- angular - 如何在使用多个 Promise 时知道所有 Promise 何时解决
- javascript - Javascript - 将事件侦听器添加到实时标签,但从事件侦听器中排除内部元素