TypeScript如何定义首元素属性可选其余元素该属性必填的数组接口
TypeScript 实现首元素属性可选、其余元素属性必填的对象数组类型定义
要实现该需求,可以通过 TypeScript 的元组+剩余类型语法,为数组不同位置的元素分别指定类型:
首先定义两种基础项类型:
// 首元素类型:label 属性可选 interface FirstItem { label?: string; value: string; } // 其余元素类型:label 属性必填 interface RequiredItem extends FirstItem { label: string; }
然后将数组的类型定义为「首元素为FirstItem,后续所有元素为RequiredItem」的结构即可:
const array: [FirstItem, ...RequiredItem[]] = [ { value: 'Value1' }, { label: 'Label2', value: 'Value2' }, { label: 'Label3', value: 'Value3' }, { label: 'Label4', value: 'Value4' } ];
效果说明:
- 首元素不填
label属性不会触发类型报错,符合需求 - 除首元素外的任意位置元素如果缺少
label属性,TypeScript 会直接抛出类型错误 - 如果需要兼容空数组场景,可以将类型调整为
[FirstItem?, ...RequiredItem[]]即可
内容的提问来源于stack exchange,提问作者Houssam
相关产品推荐
相关产品推荐

