我有一个如下类型:
type EventType = {
event1: undefined,
event2: {
user: number
}
}
type EventName = keyof EventType;
该类型用于输入 logEvent 函数:
function logEvent<T extends EventName>(eventName: T, extraData: EventType[T]) {
}
这确保在调用 logEvent 时,强制执行正确的 eventName 和 extraData 组合:
logEvent('event1', undefined)
logEvent('event2', { user: 5 })
但是,对于第一种情况(未定义),我希望第二个参数是可选的:
logEvent('event1')
logEvent('event2', { user: 5 })
我正在努力寻找解决方案。我的尝试大多都是无用功。