[英]How do I define an array of keys of an object in TypeScript?
如何在 TypeScript 中定义 object 的键数组?
例子:
const obj = {
red: 0,
blue: 1
};
// Doesn't work
const test: keyof obj[] = ['red', 'blue'];
你有两个问题。
首先,您将值obj
称为类型,这是不允许的。 您可以使用typeof
关键字获取值的类型。
其次, keyof Something[]
将为您keyof (Something[])
,即数组类型的键,而不是(keyof Something)[]
,这正是您想要的。 您可以使用括号来解决这个问题。
放在一起看起来像:
const obj = {
red: 0,
blue: 1
};
const test: (keyof typeof obj)[] = ['red', 'blue'];
尽管大多数情况下您希望自己为obj
声明一个类型,但它更易于在其他地方使用和引用。
interface MyType {
red: number
blue: number
}
const obj: MyType = {
red: 0,
blue: 1
};
const test: (keyof MyType)[] = ['red', 'blue'];
一种解决方案是:
const test: Array<keyof typeof obj> = ['red', 'blue'];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.