如何从已有类型中获取其数组属性的成员类型?
获取TypeScript数组类型的成员类型
要给变量obj指定MasterProps['objects']数组的成员类型,直接用TypeScript的索引访问类型就能搞定,这是最直接的方案:
方法1:先定义类型别名再使用
// 假设已有这些不可修改的定义 interface ChartOpts { /* 你的ChartOpts结构 */ } interface ImageOpts { /* 你的ImageOpts结构 */ } interface MasterProps { objects: Array<{ chart: ChartOpts } | { image: ImageOpts }>; } // 提取数组的成员类型 type ObjectItem = MasterProps['objects'][number]; // 给变量指定类型 const obj: ObjectItem = { chart: { /* 具体ChartOpts内容 */ } }; // 或者赋值image类型的对象 // const obj: ObjectItem = { image: { /* 具体ImageOpts内容 */ } };
方法2:直接在变量声明时使用
如果不需要复用这个成员类型,也可以直接写在变量定义里,省掉类型别名:
const obj: MasterProps['objects'][number] = { image: { /* ... */ } };
原理很简单:MasterProps['objects']拿到的是数组类型,TypeScript里对数组类型使用[number]索引访问,会返回该数组的元素类型,也就是你要的{chart: ChartOpts} | {image: ImageOpts}。
内容的提问来源于stack exchange,提问作者raarts
相关产品推荐
相关产品推荐

