Tenho um tipo como segue:
type EventType = {
event1: undefined,
event2: {
user: number
}
}
type EventName = keyof EventType;
Esse tipo é usado para digitar uma função logEvent:
function logEvent<T extends EventName>(eventName: T, extraData: EventType[T]) {
}
Isso garante que, quando logEvent for chamado, a combinação correta de eventName e extraData seja aplicada:
logEvent('event1', undefined)
logEvent('event2', { user: 5 })
Entretanto, para o primeiro caso (indefinido), gostaria que o segundo argumento fosse opcional:
logEvent('event1')
logEvent('event2', { user: 5 })
Estou lutando para encontrar uma solução para isso. Minhas tentativas são, na maioria, sem sentido.