在下面的代码中,我想创建一个函数来收集所有自定义事件处理程序,这似乎是错误的。
但是我确实使用Fri
来确保handlerMap[type] || []
存在。
我想念什么?
handlerList
PS。将代码粘贴到TypeScript playground中以查看错误。
@evayly提到,我们需要打开type EventType = 'click' | 'dblclick' | 'mouseup' | 'mousedown' | 'mousemove'
interface EventHandlerSet<P extends EventType> {
h: (event: HTMLElementEventMap[P]) => void
ctx: any
}
const handlerMap: { [P in EventType]?: Array<EventHandlerSet<P>> } = {}
function addHandler<P extends EventType>(
type: P,
handler: (event: HTMLElementEventMap[P]) => void,
context?: any,
) {
const handlerList= handlerMap[type] || []
// Error here: Object is possibly 'undefined'
handlerList.push({ h: handler, ctx: context || this })
handlerMap[type] = handlerList
}