typescript - 无法调用可能是“未定义”的对象
问题描述
我有以下代码
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)
}
解决方案
您可以利用可选链接:
let dispatcher = function (name: TableEventName, params: any): any {
const handler = options.event?.[name];
return handler?.(params);
}
推荐阅读
- react-native - 如何在本机反应中使用状态钩子来动态创建组件
- ios - 没有为给定的视图控制器注册本机启动画面。首先为给定的视图控制器调用“splashscreen.show”
- javascript - 仅使用解析和 Math.random 从 JSON 中获取随机值,没有循环、数组和 Object.keys
- grid - 如何将 QML 中的项目包装和堆叠成行和列
- python - 如何使用opencv获取轮廓作为图像
- python-3.x - 在 python 中导入包时遇到问题
- postgresql - 将记录从一个表插入到另一个表,然后删除插入的记录
- delphi - 如何在不重新安装整个 JVCL 库的情况下修复 JvYearGrid 控件的小错误
- python - 返回 2 个或更多 dfs 的函数 - 如何在 main() 函数中调用它?
- python - 如何使用 Python 操作 CSV 中特定索引中的所有项目?