Какой тип задавать функции внутри класса typescript
Переписываю js на ts и столкнулся с проблемой типизации функций в классе. Имеется родительский класс, в данном классе массив, в который, соответсвенно, пушатся функции вызывающиеся по подписке.
export default class EventEmitter {
constructor () {
this._handlers = []
}
addChangeEventListener(handler) {
this._handlers.push(handler)
}
executeHandlers() {
this._handlers.forEach((handler) => {
handler()
})
}
}
Вопрос собственно такой: не пойму какой класс указать переменной handler и соответственно типу данных в массиве. Благодарю.
Ответы (3 шт):
Автор решения: Zhihar
→ Ссылка
- всегда можно указать
any - поскольку это массив, то можно указать
Array<any>
Автор решения: Stepan Kasyanenko
→ Ссылка
Если ваши функции имеют определенный набор аргументов, то можно указать точно
addChangeEventListener(handler:(a:number, b: number)=>number) {
this._handlers.push(handler)
}
Или, если будет использоваться в нескольких местах, то можно создать тип
type myFunc = (a: number, b: number) => number;
addChangeEventListener(handler: myFunc) {
this._handlers.push(handler)
}