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

Типичный массив функций

Я пытаюсь выяснить, возможно ли в TypeScript объявить статически типизированный массив функций.

Например, я могу это сделать:

foo: (data:string) => void = function (data) {};

Но если я хочу, чтобы foo был массивом функций, которые берут строку и ничего не возвращают, как это сделать?

foo: (data:string) => void [] = [];

Не работает, потому что TypeScript думает, что это функция, которая принимает строку и возвращает массив void, и мне не кажется, что я пытаюсь обернуть функцию в скобки.

Любые идеи?

Отвечать. Благодаря mohamed ниже, вот пример, который работает на игровой площадке TypeScript:

class whatever {
public foo: { (data: string): void; }[] = [];

    dofoo() {
        for (var i=0; i < this.foo.length; i++) {
             this.foo[i]("test");
        }
    }
}

var d = new whatever();

d.foo.push(function(bar){alert(bar)})
d.foo.push(function(bar){alert(bar.length.toString())})

d.dofoo();
4b9b3361

Ответ 1

Вы можете найти это в описании языка в разделе 3.5.5:

foo: { (data: string): void; } []

Ответ 2

Другие (более новые, более читаемые) способы ввода массива функций с использованием толстых стрелок:

let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];