功能compose
可以具有一個或多個對象作爲它的參數的陣列。 在compose
中,類型防護區分對象和數組。 函數mapper
只能處理對象,並且通過使用類型保護,只有對象被提取。打字稿:如何型保護聯合類型
interface Link {
something: string;
}
function compose(link: Link|Link[]) {
if (link instanceof Array) {
R.map(function(l) {
return mapper(l);
}, link);
} else {
return mapper(link);
}
}
function mapper(link: Link) {
return link;
}
編譯這個例子中導致錯誤:
錯誤TS2345:Link類型的」參數|鏈接[]」是不能分配給類型的參數‘鏈接’
此錯誤是可以理解的映射獲得一個聯合類型作爲參數,但只有一個單一對象的期望。這不是我使用警衛時所希望的。對此有何想法?
你可以做一個TSC --version和報告您正在使用的版本? – Martin
消息TS6029:版本1.4.0.0 – donnut