ts错误TS1109,如何解决?

1,331 阅读1分钟
  • 此错误一般发生在使用可选链运算符的时候,比如fnObj[code]?.call()代码在报TS1109错误的原因是因为若 fnObj[code] 返回的值为 undefined,那么整个表达式将返回 undefined, TypeScript 编译器将无法确定 ?.call() 的上下文。为解决这个问题,可以有两种方法:

    1. 使用非空断言! 表明fnObj[code]不可能为空,即改成fnObj[code]!.call()

    2. 升级ts的版本

      • 若你的ts版本在3.7以下,在使用可选链运算符的时候就会有这种问题,需要将版本升级到3.7以上。你可以按如下步骤操作:

      • 安装最新版本的ts

        npm install -d typescript@latest
        
  • 修改编辑器所用的typescript版本

    • 若你用的是vscode,请参考这个链接去修改。
    • 若用的是webstorm,打开设置Preferences -> Languages & Frameworks -> TypeScript,将typescript那栏的来源修改成你前面安装的包的位置