簡體   English   中英

打字稿中聯合類型的解構

[英]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視為分解聯合類型的一種方式。 有幾種方法可以使用它。

如果FooBar是一個類,您可以使用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中的基本類型( stringnumberboolean

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM