在其他接口内扩展阵列的自定义接口

时间:2016-07-01 12:15:43

标签: typescript interface

我在编译期间一直收到错误: 错误TS2339属性' customMethod'类型'行动[]'

上不存在

这些是我的界面:

export interface Action {
    Name: string;
    someFunc(): void;
}

export interface ActionCollection {
    Actions: Action[];
}

然后在我的代码中,我试图使用一个尚未在界面中描述过YET的方法,但它在运行时可用。可以从ActionsCollection中的Actions数组获得此方法,就像本机.length属性一样。

let myAC: ActionCollection = new ActionCollection( stuff );
myAC.Actions.customMethod(); // Note that it is attached to Actions

我的问题是如何在界面中定义它?

我尝试过这样的事情,但是我遇到了错误:

export interface Action<> {
    customMethod(): any;
}

1 个答案:

答案 0 :(得分:2)

如果您希望您的actions数组具有此方法,则需要将其添加到Array接口:

interface Array<T> {
    customMethod(): void;
}

然后所有阵列都会拥有它:

let a = [];
a.customMethod();

但这可能不是你之后的事情,而只是定义你自己的数组:

export interface Action {
    Name: string;
    someFunc(): void;
}

export interface ActionsArray extends Array<Action> {
    customMethod(): void;
}

export interface ActionCollection {
    Actions: ActionsArray;
}

你说你已经实现了实际功能,所以这应该足够了。