typescript - 将未定义的属性映射到可选属性
问题描述
我正在尝试编写一个映射类型,使未定义的属性成为可选的。
更具体地说,我有一个像这样的类型:
interface Input {
foo: string;
bar: string | undefined;
baz: number | undefined;
}
我想使用映射类型将其变成这种类型:
interface Output {
foo: string;
bar?: string;
baz?: number;
}
我只能找到使所有属性可选的示例,这不是我想要的。
解决方案
这是一个可能的解决方案(使用 TS 4.1):
interface Input {
foo: string;
bar: string | undefined;
baz: number | undefined;
}
type UndefinedToOptional = {
[K in keyof Input as undefined extends Input[K] ? K : never]?: Input[K]
}
type T1 = Omit<Input, keyof UndefinedToOptional> & UndefinedToOptional
/*
{
foo: string;
bar?: string | undefined;
baz?: number | undefined;
}
*/
推荐阅读
- c++ - 在 C++ 中结合 OpenCVs k-means 聚类和 Vigra
- python - 抓取网页时避免重复单词_python
- javascript - 动态获取 html + css + (javascript eventlistener 不工作)
- r - 如何在R中的数据框中仅删除字符串的一部分?
- emv - 9F1D 是一个配置还是从其他配置派生的
- c# - 查找一个单词的多次出现并使用 c-sharp 打印出该单词所在的整行
- python - 使用 python/kivy 运行应用程序时仅显示“else 语句”
- javascript - 无法从 Twin.macro 中的 Prop 获取值
- c# - 从 blobBaseClient.DownloadToAsync 获取 FullContent
- python - 如何获取生成 .append() 函数的代码?