[英]Destructuring of union types in typescript
是否有一種方法(類似於函數式語言的模式匹配)來解構TypeScript中的聯合類型,即一些構造如:
var a: Foo | Bar = ...;
a match {
case f: Foo => //it's a Foo!
case b: Bar => //it's a Bar!
}
如果沒有這樣的結構 - 在創建這樣的結構時是否有任何技術困難?
TypeScript將Type Guard視為分解聯合類型的一種方式。 有幾種方法可以使用它。
如果Foo
或Bar
是一個類,您可以使用instanceof
:
if (a instanceof Foo) { a.doFooThing(); }
如果它們是接口,您可以編寫用戶定義的類型保護:
function isFoo(f: any): f is Foo {
// return true or false, depending....
}
if (isFoo(a)) {
a.doFooThing();
} else {
a.doBarThing();
}
您還可以使用typeof a === 'string'
來測試union中的基本類型( string
, number
或boolean
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.