Typescript中使用never有什么好处?

6
我刚开始学习 TypeScript,了解了类型“never”。但我并没有理解它的实际用途。从这里得知,任何不会执行或无法到达的代码都被标记为“never”。
// Type () => never
const sing = function() {
    while (true) {
        console.log("Never gonna give you up");
        console.log("Never gonna let you down");
        console.log("Never gonna run around and desert you");
        console.log("Never gonna make you cry");
        console.log("Never gonna say goodbye");
        console.log("Never gonna tell a lie and hurt you");
    }
};

上述代码中的函数包含一个无限循环,因此会被标记为永远不会结束,那么这样做有什么好处呢?


“任何不会被执行或无法到达的代码都被标记为永远不会执行” - 不是这样的。在您提供的示例中,所有代码都将被执行。任何永远不会返回的函数的返回值都是“never”。 - JJJ
@JJJ,如果上述代码将要执行,那么函数会陷入循环中,如何返回值? - Sunil Garg
什么?我明确说了它不会返回任何东西。 - JJJ
那么它应该返回什么类型呢? - JJJ
数据类型很重要,如果我处理不当会导致循环中断,否则应用程序将处于崩溃状态。 - Sunil Garg
显示剩余4条评论
1个回答

7

针对你的例子,好处在于确保你不会从函数中逃脱。

尝试明确设置never返回类型。

const sing = function():never {
    while (true) {
        console.log("Never gonna give you up");
        console.log("Never gonna let you down");
        console.log("Never gonna run around and desert you");
        console.log("Never gonna make you cry");
        console.log("Never gonna say goodbye");
        console.log("Never gonna tell a lie and hurt you");

        break; // Error
    }
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接