typescript handbook on user defined type guardsは 矢印スタイルのユーザー定義型ガード?
function isFish(pet: Fish | Bird): pet is Fish {
return (<Fish>pet).swim !== undefined;
}
矢印の関数の対応する構文があります
例としてのタイプのガードを定義しますか?typescript handbook on user defined type guardsは 矢印スタイルのユーザー定義型ガード?
function isFish(pet: Fish | Bird): pet is Fish {
return (<Fish>pet).swim !== undefined;
}
矢印の関数の対応する構文があります
例としてのタイプのガードを定義しますか?型宣言の代わりにキャストを使用するタイプ:
const isFish = (pet => !!pet.swim) as (pet) => pet is Fish
しかし、それはより冗長であるという事実を考えると、私はあなたが本当にthis
が結合必要がない限り、通常の機能として、型ガードを書くことを好むだろうが、おそらくコードのにおいです。代替として
はい、あなたはboolean
を返したのと同じように、あなたは単にpet is Fish
を返す:シングルタイプ((pet: Fish | Bird) => pet is Fish
)ではなくパラメータと戻りが個別に入力するよう
const isFish: (pet: Fish | Bird) => pet is Fish = pet => (pet as Fish).swim !== undefined
アロー機能が宣言されています。
、これも
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');
の作品私は矢印関数の宣言と実装を組み合わせますか? (ハンドブックの構文例と似ていますか?) – LudvigH
編集して明確にしました。 –
これはコンパイラエラーを示します。 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