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