typescript - 如何使用枚举值作为打字稿接口中的键?
问题描述
我正在寻找一种方法来使用枚举的键来定义接口的允许键,你是如何实现的?
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[]
}
推荐阅读
- django - 使用 Grappelli 扩展时更改表单中的 Django Admin 模型千位分隔符
- python - 列中的值所需的最近日期
- image - Vue.js 无法读取从 STRAPI 带来的 json 对象的属性
- javascript - 来自 React 钩子的故障?
- python - Python:将for循环操作扩展到矩阵中的每一行而不使用迭代
- airflow - 带有-build标签的气流容器图像之间的区别
- sonarqube - 即使代码库已更改,SonarQube 已修复的问题仍会显示
- javascript - 三.js基础,shadertoy例子,如何随物体变换图案?
- python - 如何从图像列表和标签 numpy 数组创建数据框
- amazon-web-services - 如何自动创建全天的弹性搜索索引模式?