PR : microsoft/TypeScript#8652
Issue : microsoft/TypeScript#3076
Concept : https://en.wikipedia.org/wiki/Bottom_type
Add bottom.md in tips.
Use case
// Without a bottom type we would error :
// - Not all code paths return a value
// - Unreachable code detected
function foo(x: string | number) {
if (typeof x === "string") {
return true;
} else if (typeof x === "number") {
return false;
}
fail("Unexhaustive!");
}
function fail(message: string) { throw message; }
Confusion with void
void is a Unit. never is a falsum.
A function that returns nothing returns a Unit void. However a function that never returns (or always throws) returns never. void is something that can be assigned (wihout strictNullChecking) but never can never be assigned to anything other than never.
PR : microsoft/TypeScript#8652
Issue : microsoft/TypeScript#3076
Concept : https://en.wikipedia.org/wiki/Bottom_type
Add
bottom.mdin tips.Use case
Confusion with
voidvoidis a Unit.neveris a falsum.A function that returns nothing returns a Unit
void. However a function that never returns (or always throws) returnsnever.voidis something that can be assigned (wihout strictNullChecking) butnevercanneverbe assigned to anything other thannever.