首页 > 解决方案 > 无法调用可能是“未定义”的对象

问题描述

我有以下代码

  dispatchEvent(name: TableEventName, params: any): any {
    const event =
      typeof this.options?.event?.[name] === 'function' ? this.options.event[name] : () => {}
    return event(params)
  }

在编译返回

无法调用可能是“未定义”的对象。返回事件(参数)

我正在做正确的检查,为什么会这样?

完整代码:


type TableEventName = 'onStateChange' | 'onSort' | 'onPageChange' | 'onSelection'

interface TableOptions {
  event?: {
    onStateChange?: (event: any) => void
    onSort?: (event: any) => void
    onPageChange?: (event: any) => void
    onSelection?: (event: any) => void
  }
}

let options: TableOptions = {
    event: {
        onSort: () => { } 
    }
}

let dispatcher = function (name: TableEventName, params: any): any {
    const event =
      typeof options?.event?.[name] === 'function' ? options.event[name] : () => {}
    return event(params)
}

这里

标签: typescript

解决方案


您可以利用可选链接:

let dispatcher = function (name: TableEventName, params: any): any {
  const handler = options.event?.[name];

  return handler?.(params);
}

推荐阅读