我創建的代碼樣本塊,顯示在打字稿語法錯誤,但運行良好,如JavaScript:TypeScript Sandbox錯誤2339與||和聯盟類型
基本上,當我試圖使用||
(OR
)運算符collaese一個對象屬性,可能是undefined
TypeScript它表示屬性不存在,我知道這是爲什麼我使用||
。
class Person {
name: string;
job: string;
}
var person1:Person = {name: 'hi', job: 'yes'};
var name = 'bye';
function showName(person1:Person | string) {
var personsName: string = person1.name || person1;
document.write(personsName);
document.write('<br />');
}
showName(person1);
showName(name);
輸出是完全按照我希望它是:
hi
bye
然而,打字稿顯示了person1.name語法錯誤。爲什麼?什麼是正確的TypeScript方法呢?
你的代碼對某人將'name'屬性賦值給'String.prototype'或將'person1.name'賦值爲''「'(在這種情況下,你可能會看到'[Object object ]'或類似的東西也沒用)。 David Sherret的回答在這方面非常有用。 –