Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在typescript接口中将枚举值用作键?_Typescript_Interface - Fatal编程技术网

如何在typescript接口中将枚举值用作键?

如何在typescript接口中将枚举值用作键?,typescript,interface,Typescript,Interface,我正在寻找一种使用enum的键来定义接口允许的键的方法,如何实现这一点 您将收到错误消息: 索引签名参数类型不能是联合类型。请考虑使用映射对象类型。 如消息所示,您可以使用以下方法解决此问题: 请下次在您的帖子中通过代码(带有链接),谢谢:),因为typescript不支持这一点。问题是“映射类型仅在类型别名中受支持。接口和类具有不适合映射类型的合并语义。”这将密钥限制为枚举密钥,而不是枚举密钥的值。有办法吗?假设我有enum enum SomeOptions{Option1=“Abc”,Op

我正在寻找一种使用enum的键来定义接口允许的键的方法,如何实现这一点


您将收到错误消息:

索引签名参数类型不能是联合类型。请考虑使用映射对象类型。

如消息所示,您可以使用以下方法解决此问题:


请下次在您的帖子中通过代码(带有链接),谢谢:),因为typescript不支持这一点。问题是“映射类型仅在类型别名中受支持。接口和类具有不适合映射类型的合并语义。”这将密钥限制为枚举密钥,而不是枚举密钥的值。有办法吗?假设我有enum enum SomeOptions{Option1=“Abc”,Option2=“Xyz”},我想将键限制为小写Abc和Xyz,有没有快速的方法?
enum Gender {
  male = 'male',
  female = 'female'
}

interface Person {
  name: string;
  gender: string;
}

const people: Person[] = [
  { name: 'Mary', gender: 'female' },
  { name: 'Jerry', gender: 'male' },
  { name: 'Joe', gender: 'male' }
]

interface PeopleGroupedByGender {
  // HERE: how to use the enum to describe the [key] value here?
  [key: keyof typeof Gender]: Person[]
}

const peopleGroupedByGender: PeopleGroupedByGender = {
  [Gender.female]: people,
  male: people
}
type PeopleGroupedByGender = {
  [key in keyof typeof Gender]: Person[]
}