Подтвердить что ты не робот

TypeScript подписи типов для функций с переменными аргументами

У меня возникают проблемы с определением интерфейсов с членами функции, которые принимают переменные количества аргументов. Возьмем в качестве примера следующий литерал объекта:

var obj = {
    func: () => {
        for(var i = 0; i < arguments.length; i++) {
            console.log(arguments[i]);
        }
    }
};

Я хотел бы иметь возможность определять интерфейс, например:

interface IExample {
    func: ( ??? ) => void;
}

Чтобы следующий код мог компилироваться без ошибок:

var test = (o: IExample) {
    o.func("a");
    o.func("a", "b");
    o.func("a", "b", "c");
    ...
}
4b9b3361

Ответ 1

TypeScript использует распространенное предложение ECMAScript 6,

http://wiki.ecmascript.org/doku.php?id=harmony:spread

но добавляет аннотации типов, чтобы это выглядело,

interface IExample {
    func(...args: any[]): void;
}