2017-02-10 13 views
1

1つの基本インターフェイスを拡張するインターフェイスのリストがあります。typescriptインターフェイスを他のインターフェイスのユニオンとして作成する

私はこれらのインターフェイスのいずれかを受け入れることができるいくつかの機能も持っています。

この種のパラメータを記述する新しいインターフェイスを作成したいと考えています。

だから私はこのようなものがあります:

interface BasicInterface {...}; 

interface A extends BasicInterface {...}; 
interface B extends BasicInterface {...}; 

をし、それがあるので、私は

interface C = A | B; 

ような何かをしたいと思い、私は私の機能で、私は

function X(param1: A | B) {}; 

を行うことができます知っているが、複数の関数私はそれらすべてのためにただ一つのインターフェースを持っていたいと思います

+0

をXはBasicInterfaceに何よりも必要なのですか? – toskv

+0

@toskvはい、 'BasicInterface'のプロパティをチェックしてから、すべてのインターフェイスの特定のプロパティを使用します – rpadovani

+0

何が問題なのですか?なぜなら、それは本当に良いアイデアだとは別に、あなたが簡単にparamシグネチャを定義できるからです。 – robkuz

答えて

4

したがって、Typescriptのドキュメントを掘り下げた後、私が探していたものが見つかりました。

私は次に機能で、私は正しいことにアクセスするタイプのガードを使用type C = A | B;

のような新しいタイプを宣言することができます。

function isA(param: C): param is A { 
    return param.type === A; 
} 

function X(param1: C) { 
    if (isA(param1)) //things related to A 
    else //things related to B 
}; 
関連する問題