You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从已有类型中获取其数组属性的成员类型?

获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:25:12