跳到主要内容

简述TypeScript 的 never type 是什么,什么时候用?

参考答案:

TypeScript 中的 never 类型表示的是那些永不存在的值的类型。换句话说,never 类型是那些永远不会被赋值给变量的类型。这听起来可能有点抽象,但实际上,它主要用于描述函数永远不会返回的情况,或者变量永远不会被赋值的场景。

最常见的 never 类型使用场景是在函数返回类型中。例如,一个函数如果永远不会返回(例如,它包含一个无限循环或者它抛出了一个永远不会被捕获的异常),那么这个函数的返回类型就是 never

这是一个例子:

function error(message: string): never {
    throw new Error(message);
}

在这个例子中,error 函数接受一个字符串参数,并抛出一个错误。由于这个错误永远不会被捕获,因此 error 函数的返回类型是 never

另一个使用 never 类型的场景是在联合类型(union types)中。在 TypeScript 中,你可以使用 | 符号来创建联合类型,这表示一个变量可以是几种类型之一。如果你想要表示一个变量可以是任何类型,除了某个特定的类型,你可以使用 never 类型。例如:

type AllButString = number | boolean | null | undefined | never;

在这个例子中,AllButString 是一个联合类型,表示一个变量可以是 numberbooleannullundefined,但永远不能是 string 类型。

总的来说,never 类型是 TypeScript 中一种非常有用的类型,它主要用于描述那些永远不会被赋值给变量的值,或者函数永远不会返回的情况。