我有一个对象,其中包含多个在编译时未知的方法名称。但是,方法的签名始终相同。我试图使用这样的索引类型:
interface List<T> extends Array<T> {
[key: string]: (...arg0: any[]) => List<T>
[key: string]: () => List<any>
each(fn: Function): void
each(...args: any[]): void
toArray(): T[]
}
但是,打字稿抱怨它不适合其他方法签名:
类型'{(fn:Function)类型的属性'each':void; (... args:any []):void; }'不能分配给字符串索引类型'(... arg0:any [])=>列表'。
我知道这是一件不寻常的事情,但是您怎么能完成打字稿中需要的工作呢?
答案 0 :(得分:0)
interface List<T>{
[key: string] : ((...arg) => any) | (() => List<any>);
each: ((fn: Function) => void) | ((...args: any[]) => void);
toArray : () => T[];
}
这是你想要的吗?