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

TypeScript如何从已有类型的可选属性构造全必选的新类型

实现方案

可以通过 TypeScript 内置工具类配合自定义的可选键提取类型实现:

  1. 先定义通用的可选属性键提取类型
type OptionalKeys<T> = { [K in keyof T]-?: {} extends Pick<T, K> ? K : never }[keyof T]

该类型的逻辑是遍历目标类型的所有属性,判断属性是否为可选:如果单独提取该属性组成的类型兼容空对象,说明该属性为可选,会保留对应的键,否则会被过滤。
2. 组合内置工具类构造目标类型Bar

// 你的原始类型定义
interface Foo {
  prop1: string,
  prop2: number,
  prop3?: boolean,
  prop4?: object
}

// 最终构造的Bar类型
type Bar = Required<Pick<Foo, OptionalKeys<Foo>>>

构造完成的Bar和你预期的效果完全一致,等价于:

interface Bar {
  prop3: boolean,
  prop4: object
}

内容的提问来源于stack exchange,提问作者Julian Lachniet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:09:01