Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

remove null or undefined from properties of a type

I need to declare a type such that removes the undefined from its property types.

Suppose we have:

type Type1{   prop?: number; }  type Type2{   prop: number | undefined; }  type Type3{   prop: number; } 

I need to define a generic type called NoUndefinedField<T> such that NoUndefinedField<Type1> gives the same type as Type3 and the same type as NoUndefinedField<Type2>.

I tried this

type NoUndefinedField<T> = { [P in keyof T]: Exclude<T[P], null | undefined> }; 

But it only works for Type2.

like image 202
Fartab Avatar asked Oct 29 '18 16:10

Fartab


1 Answers

There is also now the NonNullable type built in:

type NonNullable<T> = Exclude<T, null | undefined>;  // Remove null and undefined from T 

https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullablet

like image 54
DShook Avatar answered Oct 25 '22 00:10

DShook