2017-12-16 15 views

答えて

2

型宣言の代わりにキャストを使用するタイプ:

const isFish = (pet => !!pet.swim) as (pet) => pet is Fish 

しかし、それはより冗長であるという事実を考えると、私はあなたが本当にthisが結合必要がない限り、通常の機能として、型ガードを書くことを好むだろうが、おそらくコードのにおいです。代替として

1

はい、あなたはbooleanを返したのと同じように、あなたは単にpet is Fishを返す:シングルタイプ((pet: Fish | Bird) => pet is Fish)ではなくパラメータと戻りが個別に入力するよう

const isFish: (pet: Fish | Bird) => pet is Fish = pet => (pet as Fish).swim !== undefined 

アロー機能が宣言されています。

+0

の作品私は矢印関数の宣言と実装を組み合わせますか? (ハンドブックの構文例と似ていますか?) – LudvigH

+0

編集して明確にしました。 –

+0

これはコンパイラエラーを示します。 C.f。この[プレイグラウンドスニペット](https://www.typescriptlang.org/play/#src=interface%20Bird%20%7B%0D%0A%20%20%20%20fly()%3B%0D%0A%20 20%20%20%20%20%30%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20% (ペット%3A%20Fish%20%7C%20Bird)%20%3D%%20A%20%20%20%20%20% 3%20%%20%20%20%20%3D%20%20%3D%3%20% – LudvigH

0

、これも

const isFish = (pet: any): pet is Fish => !!pet.swim; 

またはあなたがより明確

const isFish = (pet: any): pet is Fish => pet.swim === 'function'; 

ことを好む場合、テストは、同様の特性に対して行うことができる一方で

どう
const isFish = (pet: any): pet is Fish => pet.hasOwnProperty('genus'); 
関連する問題