The never Type in TypeScript
never is a data type of values that will never happen. We use never in a function that will never reach the end of that function or when narrowing a type that will never return any data type. never can be assigned to any type available in TypeScript. It is also considered a subtype of all the types in TypeScript.
Examples
A function where never is implicitly dervied
function genericError() {
return new Error("Oops! Something is wrong");
}
A function where it will never reach the end of that function, hence never is the return type
function someError(errorMessage: string): never {
throw new Error(errorMessage);
//Some more logic
}
Having never as an implicit return type through type narrowing
function determineType(param: number | T[]) {
if (typeof param === 'number') {
return param;
}else if(Array.isArray(param)) {
return param;
}
}
In the function if the value of param is neither of type number or an array of type any, the type by default will be of type never.
Difference between never and void
The difference between never and void is that void can have as values null or undefined, but never is not allowed to have a value.
let a: void = null; let b: never = null; //Type 'null' is not assignable to type 'never'.
This blog post was originally published on my blog Communicode, where I write about different tech topics.