never在TypeScript当中指的是从来不会出现的值,一般来说可以用在两个地方:
- 一个总是返回错误的函数的返回值
- 一个没有返回值的函数(譬如陷入死循环)的返回值
例子如下:
function error(msg: string): never {throw new Error(msg)}function infiniteLoop(): never {while(true) {}}
never是任何类型的子类型,所以可以赋值给任何类型。与此同时,任何类型(never除外)都不是never的子类型,所以除never外的类型都不能赋值给never。
除此之外,一个跟never容易产生混淆的类型是void。never指的是不应该存在的类型,而void值是类型存在,只不过这个值为空。
