可達有一些打字稿代碼看起來基本上像這樣我如何指示的路徑是在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