【发布时间】:2020-08-12 18:47:59
【问题描述】:
我想要一个引用接口键的常量。 我希望对这个常量进行类型检查,以确保键名正确,并且我还希望将它们键入为文字。
如果我执行以下操作:
interface MyInterface {
keyA: string;
keyB: string;
}
export const MY_KEYS: Record<string, keyof MyInterface> = {
CONSTANT_KEY_A: 'keyA',
CONSTANT_KEY_B: 'keyB',
} as const;
MY_KEYS.CONSTANT_KEY_A
那么MY_KEYS.CONSTANT_KEY_A 的类型是'keyA' | 'keyB'。但我希望它是'keyA'!
如果我删除Record<string, keyof MyInterface>,它会起作用,但是我的键不再被类型检查为在 MyInterface 的键中。
知道如何实现这一目标吗?
例如,我可以添加第二个死变量来执行记录检查,并仅使用 as const 保留我的第一个变量,而不是强制转换为记录,但它非常冗长且不是很清楚。
谢谢!
【问题讨论】:
标签: typescript