2017-02-10 65 views
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

有什麼問題?因爲你可以很容易地定義一個參數簽名(除了事實,如果這是真的這麼好的主意) – 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 
};