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

如何在TypeScript类型中将单个指定属性设为必选而不重复定义?

解决方案

你可以结合TypeScript内置的Pick、Required工具类型和交叉类型实现,不需要重复定义整个类型:

type UserWithName = User & Required<Pick<User, 'name'>>

原理说明

  • 先用Pick<User, 'name'>提取出User类型里的name属性,得到类型{ name?: string }
  • 再用Required把提取出的类型转为必选,得到{ name: string }
  • 最后和原User类型做交叉,可选的name和必选的name交叉后会变成必选,其余属性的可选性和类型完全继承自原User类型,刚好符合你的需求。

通用封装

如果经常需要修改指定属性为必选,可以封装一个通用的泛型工具类型:

// 泛型T是原类型,K是要设为必选的属性名,支持传入联合类型设置多个属性
type SetRequired<T, K extends keyof T> = T & Required<Pick<T, K>>

// 使用示例
type UserWithName = SetRequired<User, 'name'>
// 同时设置多个属性为必选的示例:把name和email都设为必选
type UserWithNameAndEmail = SetRequired<User, 'name' | 'email'>

内容的提问来源于stack exchange,提问作者Louis Coulet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:24:03