Never
程序语言的设计确实应该存在一个底部类型的概念,当你在分析代码流的时候,这会是一个理所当然存在的类型。TypeScript 就是这样一种分析代码流的语言(?),因此它需要一个可靠的,代表永远不会发生的类型。
但是,never
类型仅能被赋值给另外一个 :
很棒,现在让我们看看它的关键用例。
与 void 的差异
一旦有人告诉你,never
表示一个从来不会优雅的返回的函数时,你可能马上就会想到与此类似的 void
,然而实际上,void
表示没有任何类型, 表示永远不存在的值的类型。
当一个函数没有返回值时,它返回了一个 void
类型,但是,当一个函数根本就没有返回值时(或者总是抛出错误),它返回了一个 never
,void
指可以被赋值的类型(在 strictNullChecking
为 false 时),但是 never
不能赋值给其他任何类型,除了 。