可达有一些打字稿代码看起来基本上像这样我如何指示的路径是在TypeScipt
if(...)
result = $(document.createElement("div")) ;
} else if(...) {
result = $(document.createElement("div")) ;
} else {
assert.unreachable("Unknown label in buildHTML.") ;
}
result.attr("data-childNumber", childNumber.toString()) ;
的assert.unreachable
返回类型是never
。
最后一行显示“变量结果”在分配前使用时出错。
在我看来,来自assert.unreachable
的never
结果应该告诉编译器,else
部分中没有路径。
我知道我可以通过在else
的末尾添加throw null;
来抑制错误,但这看起来不雅观。
在unreachable
的定义中出现类似的问题。它看起来像这样
export function unreachable(message? : string) : never {
if(message===undefined) message = "Unreachable code reached." ;
else message = "Unreachable code reached: "+message ;
raiseTheAlarm(message) ;
}
其中raiseTheAlarm
结果类型为never
。在这种情况下,我得到一个错误“一个函数返回'永不'不能达到终点。”
我修正了这个问题,在调用raiseTheAlarm
之前加了一个return
关键字。这看起来有点奇怪。 (当然throw null;
通话后也将工作。)
有没有更好的方式告诉编译器,代码中的一个点不可达?
tsc编译器版本为2.3.4 –
对'assert.unreachable' *的调用会阻止后续代码的执行,因为对'assert.unreachable'函数的调用永远不会返回。 –
颜色我教育了'永不'类型。我完全错过了这个功能。对困惑感到抱歉。 – Silvermind