never 的定义
never
是其它类型(包括 null
和 undefined
)的子类型,代表从不会出现的值。
never 通常有两种表现形式:
- 抛出异常
// 返回值为 never 的函数可以是抛出异常的情况 function error(message: string): never { throw new Error(message); }
- 无法执行到终止点
// 返回值为 never 的函数可以是无法被执行到的终止点的情况 function loop(): never { while (true) { } }
never 的特点
never
类型的变量可以赋给任何类型的变量;let num: number; num = (() => { throw new Error('exception'); })();
never
类型的变量只能被never
类型的变量所赋值。let invalid1: never; let invalid2: never; invalid1 = "Hello World!"; // error, string 类型不能转为 never 类型 invalid2 = (() => { throw new Error('exception'); })();