如何从对象数组自动生成TypeScript联合类型
从对象数组自动生成value值的联合类型
要实现这个需求,你可以借助TypeScript的const断言和索引访问类型,具体步骤如下:
用
as const锁定数组的字面量类型
给原数组添加as const断言,让TypeScript保留数组中每个值的具体字面量类型,避免自动拓宽为宽泛的string类型:const arr = [{ value: 'value1', key: 'key1' }, { value: 'value2', key: 'key2' }] as const;定义目标联合类型
通过typeof获取数组的类型,再用索引访问语法提取所有元素的value属性值,自动生成联合类型:type Values = typeof arr[number]['value']; // 此时 Values 的类型为 'value1' | 'value2'
原理说明
as const会将数组及其内部对象转为只读的字面量类型,确保TypeScript不会丢失具体的字符串值信息。typeof arr[number]表示取数组中任意元素的类型,再通过['value']访问该元素的value属性,最终得到所有value值的联合类型。
内容的提问来源于stack exchange,提问作者sunpietro
相关产品推荐
相关产品推荐

