如何提取对象数组中属性的所有可选值并实现TypeScript自动补全
TypeScript 提取对象数组指定属性的取值联合类型实现自动补全
要实现从对象数组中提取某一属性的所有取值作为联合类型,利用TypeScript类型系统做自动补全,实现方法如下:
注意要点
- 必须给数组加常量断言(
as const):默认情况下TypeScript会将对象的字符串属性推导为宽泛的string类型,无法获取精确的字面量取值,常量断言可以强制TS推导最精确的只读字面量类型。
完整实现代码
// 定义数组并添加as const常量断言 const arr = [{test:'option 1'},{test: 'option 2'}] as const // 提取test属性所有取值的联合类型 type TestType = typeof arr[number]['test'] // 此时变量t仅可赋值为 'option 1' 或 'option 2',编辑器会自动补全可选值 let t: TestType = ''
语法解释
typeof arr:获取数组arr对应的TS类型[number]:遍历数组所有数字下标,得到数组所有元素的联合类型['test']:提取数组元素中test属性的类型,最终得到所有取值的联合类型'option 1' | 'option 2'
内容的提问来源于stack exchange,提问作者Phoenix Developers
相关产品推荐
相关产品推荐

