Typescript拒绝通过调用fail
来缩小,但会通过调用fail2
来缩小。这是typescript中的bug吗?
const fail = (message?: string): never => {
throw new Error(message);
};
function fail2(message?: string): never {
throw new Error(message);
}
const getData = (): string | null => {
return "the-data";
}
export const loadDataOrError = (): string => {
const data = getData();
if (data === null) {
// Swap the below and see that it works
// fail2();
fail();
}
// This errors
return data;
};
如果您想尝试切换注解并看到错误消失,这里是一个Playground。
1条答案
按热度按时间yjghlzjz1#
根据this open GitHub问题,这是当前类型收缩在typescript中工作的一个限制。如果你想纠正它,你可以显式地注解箭头函数类型,如下所示: