我可以使用对象属性的名称作为对象中的字符串值吗?我的意思是我想实现这个目标:
type MyObjectType = /* ... */
const myValidObject: MyObjectType = {
a: 'a',
b: 'b'
} // valid object of type MyObjectType
const myInvalidObject: MyObjectType = {
a: 'a',
b: 'c'
} // invalid object of type MyObjectType, property b should have value 'b'
我已经尝试过类似的方法,但它不起作用:
type MyObjectType = {
[K: string]: `${K}`
}
TypeScript 中没有特定类型
MyObjectType
可以满足您的需求。相反,您可以创建一个泛型类型,其中类型参数K
是对象中键的并集:但您可能不想
MyObjectType<"a" | "b">
自己写出来。这意味着您将需要一个通用辅助函数来为您推断类型参数:现在
const o: MyObjectType = {⋯}
,您可以写const o = myObjectType({⋯})
. 这对您来说大约是相同的工作量,但它为您提供了所需的行为:Playground 代码链接