1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
=== tests/cases/compiler/nonNullableAndObjectIntersections.ts ===
// These should all resolve to never
type T0 = NonNullable<null>;
>T0 : never
>null : null
type T1 = NonNullable<undefined>;
>T1 : never
type T2 = null & {};
>T2 : never
>null : null
type T3 = undefined & {};
>T3 : never
type T4 = null & undefined;
>T4 : never
>null : null
type T6 = null & { a: string } & {};
>T6 : never
>null : null
>a : string
// Repro from #50519
type NonNullableNew<T> = T & {};
>NonNullableNew : NonNullableNew<T>
type NonNullableOld<T> = T extends null | undefined ? never : T;
>NonNullableOld : NonNullableOld<T>
>null : null
type TestNew = NonNullableNew<null>;
>TestNew : never
>null : null
type TestOld = NonNullableOld<null>;
>TestOld : never
>null : null
|