我有一组物体,

const myObj = [
  { key: 'orange', value: 1 },
  { key: 'apple', value: 1 }
]

现在,我想从myObj数组中提取类型,'orange' | 'apple'.我如何做到这一点?

推荐答案

你必须做两件事. 使用const assertion尽可能缩小object的类型.然后一般地提取密钥.

const myObj = [
  { key: 'orange', value: 1 },
  { key: 'apple', value: 1 }
] as const;

type keyType = typeof myObj[number]['key'];

常量断言对你myObj以上做了几件事,其中之一是-防止类型的扩大.因此,不是将key推断为string,而是将其推断为orange | apple.

Playground

Typescript相关问答推荐

创建一个通用上下文,允许正确推断其中的子项

Angular 17 Select 错误core.mjs:6531错误错误:NG 05105:发现意外合成监听器@transformPanel.done

类型安全JSON解析

使用带有RxJS主题的服务在Angular中的组件之间传递数据

Angular中的其他服务仅获取默认值

Angular 行为:属性类型从SignalFunction更改为布尔

获取函数中具有动态泛型的函数的参数

为什么有条件渲染会导致material 自动完成中出现奇怪的动画?

TS如何不立即将表达式转换为完全不可变?

如何在处理数组时缩小几个派生类实例之间的类型范围?

如何使用模板继承从子组件填充基础组件的画布

为什么我的查询钩子返回的结果与浏览器的网络选项卡中看到的结果不同?

有没有办法防止类型交集绕过联合类型限制?

是否有可能避免此泛型函数体中的类型断言?

如何连接属性名称和值?

TypeScrip:使用Cypress测试包含插槽的Vue3组件

有没有一种方法可以提升对象的泛型级别,而对象的值是泛型函数?

React-Router V6 中的递归好友路由

为什么我的 Typescript 函数中缺少 void 隐式返回类型?

解析错误:DeprecationError: 'originalKeywordKind' 自 v5.0.0 起已被弃用,无法再使用