我在编译期间一直收到错误: 错误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;
}
答案 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;
}
你说你已经实现了实际功能,所以这应该足够了。