我一直在阅读Typescript的文档并遇到了数据类型Never,到目前为止,我无法弄清楚他们在句子中试图暗示什么, //返回的函数永远不能有无法到达的终点
function infiniteLoop(): never {
while (true) {
}
}
任何人都可以向我解释这个吗?
答案 0 :(得分:5)
它表示如果指定never作为返回类型,则函数的return语句必须不可访问。 例如,函数将始终抛出错误,或者某处存在无限循环。
如果我们重写这样的例子,很容易想象这个:
function infiniteLoop(): never {
while (true) {
}
return 'this will never execute';
}
答案 1 :(得分:0)
从来没有信息表明此特定部分不可访问。例如,在您的代码中,您有一个无限循环,而我们不想迭代无限循环。就这么简单。
但是一个真正的问题是,它对我们有什么用? 例如,在创建更多高级类型以指向不是
时可能会有所帮助例如,让我们声明我们自己的NonNullable类型:
type NonNullable<T> = T extends null | undefined ? never : T;
在这里,我们正在检查T是否为null或未定义。如果是这样,那么我们指出它永远都不会发生。然后在使用此类型时:
let value: NonNullable<string>;
value = "Test";
value = null; // error