-
此错误一般发生在使用可选链运算符的时候,比如
fnObj[code]?.call()代码在报TS1109错误的原因是因为若fnObj[code]返回的值为undefined,那么整个表达式将返回undefined, TypeScript 编译器将无法确定?.call()的上下文。为解决这个问题,可以有两种方法:-
使用非空断言
!表明fnObj[code]不可能为空,即改成fnObj[code]!.call() -
升级ts的版本
-
若你的ts版本在3.7以下,在使用可选链运算符的时候就会有这种问题,需要将版本升级到3.7以上。你可以按如下步骤操作:
-
安装最新版本的ts
npm install -d typescript@latest
-
-
-
修改编辑器所用的typescript版本
- 若你用的是vscode,请参考这个链接去修改。
- 若用的是webstorm,打开设置
Preferences -> Languages & Frameworks -> TypeScript,将typescript那栏的来源修改成你前面安装的包的位置