6
Döngü içinde bir üçlü operatörde bir TypeScript tipi bekçi kullanıyorum ve anlamadığım bir davranış görüyorum.TypeScript type guard Oddity
Benim arayüzleri
interface INamed {
name: string;
}
interface IOtherNamed extends INamed {
otherName: string;
}
My tip bekçi
function isOther(obj: any): obj is IOtherNamed {
... // some check that returns boolean
}
Genel Kullanım Numune
var list: Array<{named: INamed}> = [];
for(let item of list) {
var other: IOtherNamed = ...
}
İçimdeki döngüsümde, geçerli nesneyi veya null değerini IOtherNamed değişkenine atamak için tip korumamı kullanıyorum.
Bu Bu
for(let item of list) {
var named: INamed = item.named;
var other2: IOtherNamed = isOther(named) ? named : null;
}
Benim Sorular
- bu bu eserlerin bir wh tasarımdan mı yapar
// Compiler Error: INamed is not assignable to IOtherNamed for(let item of list) { var other: IOtherNamed = isOther(item.named) ? item.named : null; }
çalışmıyor ile diğer değil?
- Tasarım gereği, ne zaman çalıştığını belirleyen nüans nedir? Özellikle de, nesnemi yeni bir değişkene (herhangi bir değişiklik olmadan) atamak neden derleyici hatasından kurtuluyor?