Собеседование · Frontend / Game Кандидат 3 / 15 Оглавление

Блок 1 · JavaScript / TypeScript

1.3 Pub/sub и мутация во время emit

Перед вами простой класс подписки на события.

TypeScript
class Signal<F extends (...args: any[]) => any> {
    private handlers: F[] = [];
    add(f: F) { this.handlers.push(f); }
    remove(f: F) { this.handlers = this.handlers.filter(x => x !== f); }
    emit(...args: Parameters<F>) { for (const f of this.handlers) f(...args); }
}