我有这样的代码
interface Test {
prop: number | undefined
}
Run Code Online (Sandbox Code Playgroud)
我想将未定义的属性转换为可选属性,例如
type ToOptional = ???
ToOptional<Test>
/** transform result
{
prop?: number
}
*/
Run Code Online (Sandbox Code Playgroud)
我应该如何定义 ToOptional?
编辑:
interface Test {
prop1: number | undefined;
prop2: number;
}
type ToOptional = ???
ToOptional<Test>
/** transform result
{
prop1?: number
prop2: number
}
*/
Run Code Online (Sandbox Code Playgroud)
Tit*_*mir 14
undefined您可以使用映射类型和条件类型来提取其中的属性,然后undefined从类型中选取属性。同样,我们需要选择未定义的属性才能取回所有原始属性
interface Test {
prop: number | undefined
prop2: number
prop3?: number
}
type UndefinedProperties<T> = {
[P in keyof T]-?: undefined extends T[P] ? P : never
}[keyof T]
type ToOptional<T> = Partial<Pick<T, UndefinedProperties<T>>> & Pick<T, Exclude<keyof T, UndefinedProperties<T>>>
type t = ToOptional<Test>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2089 次 |
| 最近记录: |