繁体   English   中英

如何在 TypeScript 中定义 object 的键数组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM