Например, если у нас есть следующий код,
type Events = {
SOME_EVENT: number
OTHER_EVENT: string
ANOTHER_EVENT: undefined
}
interface EventEmitter<EventTypes> {
on<K extends keyof EventTypes>(s: K, listener: (v: EventTypes[K]) => void);
}
declare const emitter: EventEmitter<Events>;
emitter.on('SOME_EVENT', (payload) => testNumber(payload));
emitter.on('OTHER_EVENT', (payload) => testString(payload));
function testNumber( value: number ) {}
function testString( value: string ) {}
, который работает ( площадка для игр ), как мы можем сделать так, чтобы вызовы для излучения не требовали второгоarg для события ANOTHER_EVENT
?
Например, я могу добавить следующую строку, и она работает:
emitter.emit('OTHER_EVENT', 'foo')
( ссылка на игровую площадку )
Но если я хочу вызвать emit
с 'ANOTHER_EVENT'
, я бы хотел сделать это без второго аргумента:
emitter.emit('ANOTHER_EVENT') // ERROR, expected 2 arguments, but got 1.
, который выдает ошибку, поскольку ожидает второй аргумент.( ссылка на игровую площадку )
Чтобы все заработало, я должен написать:
emitter.emit('ANOTHER_EVENT', undefined)
( ссылка на игровую площадку )
Как мы можем сделать второй аргумент не обязательным только для случая, когда мы вызываем emit
с 'ANOTHER_EVENT'
?