Разрешить неизвестные методы на объекте - PullRequest
0 голосов
/ 27 января 2020

У меня есть объект с несколькими именами методов, которые не известны во время компиляции. Однако подпись метода всегда одна и та же. Я попытался использовать индексный тип, подобный этому:

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[]
}

Однако машинописный текст жалуется, что он не может вписать сигнатуры других методов в это:

Свойство 'each' типа ' {(fn: Function): void; (... args: any []): void; } 'нельзя назначить строковому индексу типа' (... arg0: any []) => List '.

Я знаю, что это необычно, но как вы можете делать то, что мне нужно в машинопись

1 Ответ

0 голосов
/ 27 января 2020
interface List<T>{
[key: string] : ((...arg) => any) | (() => List<any>);
each: ((fn: Function) => void) | ((...args: any[]) => void);
toArray : () => T[];

}

это то, что вы хотите?

...