2017-10-23 12 views
1

変数をCarまたはBarの変数で指定できるようにするにはどうすればよいですか?変数タイプに2つの値のいずれかを指定できます

あなたは instanceofでご使用をラップする必要があり
class Car { 
    wheels: number; 
} 

class Bar { 
    drinks: number; 
} 

let foo: Car | Bar; 
// now foo has to have the fields of Car AND Bar. 
// I would like foo to be of type Car, OR Bar 
// foo = { wheels: 4} should not raise an error 
// foo = { drinks: 4} should not raise an error 
+0

'foo:Car & Bar;' 'foo'は両方の型のフィールドを持っていますが、' Car'や 'Bar'を' foo'に割り当てることはできません。両方のタイプのフィールドを持つものを割り当てます。あなたが持っているものは割り当てに関してはうまく動作しますが、どちらか一方になるために必要なアクセスのまわりでタイプガードを使用する必要があります。 – Duncan

+0

あなたのやり方。どちらの場合でもエラーは発生しません。 'foo'はCar ** OR ** Barのフィールドを持っていなければなりません –

答えて

0

class Car { 
    wheels: number; 
} 

class Bar { 
    drinks: number; 
} 

let foo: Car | Bar; 

if (foo instanceof Car) { 
    foo.wheels; 
} 

if (foo instanceof Bar) { 
    foo.drinks; 
} 

活字体を知っている必要があり、それ以外の場合はBarオブジェクト上wheelsにアクセスしようとするからあなたを防ぐことはできませんし、それはそれますかなり役に立たない。

あなたの例によると、foo = { wheels: 4}typescript playgroundに不平を言うことはありません。

関連する問題