reactjs - 基于类型的嵌套对象的索引类型
问题描述
关于这个主题已经有一些关于 SO 的答案,但它们似乎都已经过时了。我想根据给定的类型选择一个组件。我更喜欢使用typeof
自动生成对象的类型。声明组件类型的正确方法是什么Comp
?
const icons = {
default: {
coffee: IconCoffee,
},
service: {
coffee: IconCoffeeService,
},
} as const;
const Comp = icons[iconSet][iconName];
目前,收到以下错误:type 'string' can't be used to index type
解决方案
默认情况下,对象字面量的类型是被编码的确切对象类型,而不是字典或TS 所称的Record
类型。要使用任意字符串索引对象字面量,我们需要将其类型显式声明为记录,在本例中为嵌套记录:
const icons:
Record<string, Record<string, React.MemoExoticComponent<(props: React.SVGProps<SVGSVGElement>) => JSX.Element>>>
= { ... }
declare const iconSet: string;
declare const iconName: string;
const Comp = icons[iconSet][iconName];
推荐阅读
- javascript - 无法在浏览器上运行的 Swiper 已调整为 chrome 中的智能手机视图
- popup - 为什么要使用工作表或弹出框?有没有其他选择?
- python-3.x - 组合框依赖
- python-3.x - 如何在 python 中存储/存储日期?
- sql-server - 如何在查询中选择计算列的平均值
- node.js - 如何使用nodejs将单个文件上传到aws s3上的多个路径?
- javascript - 离子加载小本地图像很慢
- android - 如何防止 imageview 在 recyclerview 项目处跳转?
- java - 如何在android中使CalendarView垂直滚动
- javascript - 如何将鼠标悬停、突出显示并从外部域获取网页中的 DOM 对象的属性