次のことを考えてみましょう:2つのインタフェースの和集合から型を作成するにはどうすればよいですか?
interface Man {
name: string
}
interface Dog {
breed: string
}
let manDog: Man | Dog;
は1つがこの操作を行うことができるようにMan | Dog
のと等価であるタイプManDog
を作成することが可能です:
let manDog: ManDog;
次のことを考えてみましょう:2つのインタフェースの和集合から型を作成するにはどうすればよいですか?
interface Man {
name: string
}
interface Dog {
breed: string
}
let manDog: Man | Dog;
は1つがこの操作を行うことができるようにMan | Dog
のと等価であるタイプManDog
を作成することが可能です:
let manDog: ManDog;
あなたはtype
キーワードを使用することができます(ないlet
)を使用して、
新しいタイプ
をあなたのユニオンタイプのエイリアスとして作成します。
https://www.typescriptlang.org/docs/handbook/advanced-types.html
interface Man {
name: string
}
interface Dog {
breed: string
}
type ManOrDog = Man | Dog;
型警備員の表情を持っていることを忘れないでください、効果的にこれらの労働組合のタイプを使用するには、同じドキュメントのリンクで説明。
EDIT:あなたがように拡張しうること、新しいタイプ別Interface
だろう
:私は別名によって新しいタイプを交換しなかった理由。
type
で作成されたエイリアスを拡張するInterface
を作成することはできません。
また、エラーメッセージにはManOrDog
が表示されません。
この場合、ユニオンタイプの場合、エイリアスは唯一の方法です。 交差点タイプについては
しかし、あなたはあなたがそれを達成するために、継承を使用することができ
interface ManAndDog extends Man, Dog { }
と別名
type ManAndDog = Man & Dog;
と新しいタイプ間の選択肢があります
interface ManDog extends Man, Dog {}
は、代替的に、このようなタイプのいずれかMan
の一つまたはDog
type ManDog = Man | Dog;
おかげを有するよう。これはベストプラクティスとみなされますか? –
@camden_kidさらに機能を追加する予定がない場合は、オプション2) –
を入力してください。 'manDog = Man |犬; '? –