我需要声明一个类型,以便从其属性类型中删除未定义的类型。
假设我们有:
type Type1{
prop?: number;
}
type Type2{
prop: number | undefined;
}
type Type3{
prop: number;
}
我需要定义一个称为
NoUndefinedField<T>
的通用类型,以便NoUndefinedField<Type1>
给出与Type3
相同的类型,并且给出与NoUndefinedField<Type2>
相同的类型。我试过了
type NoUndefinedField<T> = { [P in keyof T]: Exclude<T[P], null | undefined> };
但是它仅适用于
Type2
。 最佳答案
现在还内置了NonNullable
类型:
type NonNullable<T> = Exclude<T, null | undefined>; // Remove null and undefined from T
https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullablet