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

如何将已有TypeScript类型转换为全属性可选且可空的类型?

实现TypeScript类型转换:将MyForm转为可选且可空的类型

当然可以实现,直接用TypeScript的映射类型就能搞定,不用重新定义整个类型结构。

先看原类型:

type MyForm = {
  email: string;
  password: string;
}

我们可以定义一个通用的类型转换工具,遍历原类型的每个属性,把它改成可选同时允许为null:

type MakeOptionalAndNullable<T> = {
  [K in keyof T]?: T[K] | null;
};

然后直接用这个工具转换MyForm,就能得到你要的类型:

type MyFormOptional = MakeOptionalAndNullable<MyForm>;

展开后这个类型完全等价于你想要的:

type MyFormOptional = {
  email?: string | null;
  password?: string | null;
}

原理很简单:[K in keyof T]会遍历原类型的所有属性名,?标记属性为可选,T[K] | null把原属性的类型扩展成“原类型或null”,一步到位完成转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:49:50