我有一个如下所示的基类型:

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

有没有办法让MyForm变成:

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

仅仅通过使用MyForm并对其进行转换?

推荐答案

可以,您可以通过? mapping modifier创建一个mapped type,使每个属性都是可选的,并在每个属性类型的基础上添加null:

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

type MyFormOptional = PartialAndNullable<MyForm>
/* type MyFormOptional = {
    email?: string | null;
    password?: string | null;
} */

Playground link to code

Javascript相关问答推荐

Math.random超出了最大调用堆栈

在JavaScript中逐一播放随机生成的音频文件数组

输入有关HTML复选框的已判断属性的信息

如何在react-Router-dom 6中Forking 路由?

nPM审计始终发现0个漏洞

在JavaScript中,如何将请求的回调函数的结果合并到运行的代码中?

我无法在NightWatch.js测试中获取完整的Chrome浏览器控制台日志(log)

Bootstrap动态选项卡在切换选项卡后保持活动状态,导致元素堆叠

空的结果抓取网站与Fetch和Cheerio

如何用拉威尔惯性Vue依赖下拉?

WebGL 2.0无符号整数输入变量

无法读取未定义错误的属性路径名''

XSLT处理器未运行

使用Promise.All并发解决时,每个promise 的线性时间增加?

如何使用子字符串在数组中搜索重复项

PDF工具包阿拉伯字体的反转数字

使用Google API无法进行Web抓取

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

是否可以将异步调用与useState(UnctionName)一起使用

用另一个带有类名的div包装元素