从不在Typescript中进行数据类型化

时间:2016-10-07 11:42:33

标签: typescript

我一直在阅读Typescript的文档并遇到了数据类型Never,到目前为止,我无法弄清楚他们在句子中试图暗示什么, //返回的函数永远不能有无法到达的终点

function infiniteLoop(): never {
    while (true) {
    }
}

任何人都可以向我解释这个吗?

2 个答案:

答案 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