2017-02-10 47 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 
};