Empty TypeScript Types¶
All fields in JS can have the value null
or undefined
unless strict mode is enabled
unknown
- I don't know
- could be anything
- need to type check/guard
- I don't know
any
- I don't care
never
¶
things that should never happen
const reportError = function (): never {
throw Error("my error");
};
const loop = function (): never {
while (true) {}
};
- prune conditional types
type NonNullable<T> = T extends null | undefined ? never : T;
// NonNullable<MyType> can't be assigned null or undefined
type A = NonNullable<number | null>; // number
- infinite loops
- only ever throwing errors
Forcing a number
to not be undefined
¶
Only in strict mode???
This still lets myNum
be undefined
type NotUndefinedButNullable<T> = T extends undefined ? never : T;
type NumberOrNull = NonNullable<number>;
const myNum1: NumberOrNull = undefined;
const myNum2: NotUndefinedButNullable<number> = undefined;
Last update:
2023-04-24