【发布时间】:2023-04-01 07:10:01
【问题描述】:
我有一个接口 MyInterface 和该接口的字符串键的 const/readonly 字典。
interface MyInterface {
someProp: number;
}
const MyObj: Record<string, MyInterface> = {
myKey1: { someProp: 1 },
myKey2: { someProp: 2 },
} as const;
现在我想创建一个type,它是MyObj 的键。
type MyKeys = keyof typeof MyObj; // MyKeys = string
或者,我可以做到
const MyObj = {
myKey1: { someProp: 1 },
myKey2: { someProp: 2 },
} as const;
type MyKeys = keyof typeof MyObj; // MyKeys = 'myKey1' | 'myKey2'
这为我们提供了所需的类型,但并未为我们提供MyObj 内的类型安全性。
不出所料,这不起作用。
const MyObj: Record<keyof typeof MyObj, MyInterface> = {
// ...
}
有没有办法在事先不知道密钥的情况下同时获得类型安全和密钥?最好,我想在没有包装函数的情况下执行此操作,但如果没有其他方法,我也许可以说服我的团队这样做是值得的。
【问题讨论】:
标签: typescript