TypeScript 面试题
目录

请解释 TypeScript 中的 never 类型的作用和用法

· 约 3 分钟读完 · 第 7 / 256 章

推荐答案

never 类型是 TypeScript 中的一种特殊类型,表示那些永远不会发生的值的类型。它通常用于以下场景:

  1. 函数永远不会正常返回:例如,抛出异常的函数或无限循环的函数。
  2. 类型收窄:在类型收窄的过程中,never 类型可以用来表示不可能的情况。

本题详细解读

1. never 类型的基本概念

never 类型表示那些永远不会发生的值的类型。它通常用于以下两种情况:

  • 函数永远不会正常返回:例如,抛出异常的函数或无限循环的函数。这些函数不会有一个正常的返回值,因此它们的返回类型是 never。

  • 类型收窄:在类型收窄的过程中,never 类型可以用来表示不可能的情况。例如,在一个 switch 语句中,如果所有可能的情况都被处理了,那么 default 分支的类型就是 never。

2. never 类型的实际应用

2.1 抛出异常的函数

在这个例子中,throwError 函数永远不会正常返回,因为它会抛出一个异常。因此,它的返回类型是 never。

2.2 无限循环的函数

infiniteLoop 函数永远不会结束,因此它的返回类型也是 never。

2.3 类型收窄

在这个例子中,default 分支的类型是 never,因为 Shape 类型的所有可能值都已经被处理了。如果未来 Shape 类型增加了新的值,TypeScript 会报错,提示你需要处理新的情况。

3. never 类型与其他类型的区别

  • void 类型:void 表示函数没有返回值,但它仍然可以正常返回(即返回 undefined)。而 never 表示函数永远不会正常返回。

  • any 类型:any 类型表示任意类型,而 never 类型表示不可能的类型。

4. 总结

never 类型是 TypeScript 中一种特殊的类型,用于表示那些永远不会发生的值的类型。它通常用于抛出异常的函数、无限循环的函数以及在类型收窄中表示不可能的情况。理解 never 类型的使用场景有助于编写更安全和更健壮的 TypeScript 代码。