每天学习一点点,成功增加一大步

typescript: Cannot assign to ‘XXX’ because it is not a variable

NodsJS zhanghui 446℃

最近在写 node 项目时遇到当我在一个文件(a.ts)中声明了全局变量(export var globalVar)时,在另一个文件(b.ts)中对这个全局变量进行读或重新赋值操作会提示以下语法的问题。

Cannot assign to ‘globalVar’ because it is not a variable.

但这个不是非常严重性的问题,程序也能照常运行,按照原生的 js 来说没有这个毛病,但 WEBStorm IDE 的 typescript 语法提示中一起显示这个问题,越看越不爽于是呼去寻找这个问题的原因。

最后这个原因是与 CommonJS 和 ES6 有关。

CommonJS modules export values. ES6 modules export bindings – live connections to values.

要想解决这个问题就要将全局变量置于一个函数(或类、或方法)体内。如

class GlobalVar {
 constructor(public userId: number = 0) {}
}
export var globalVar = new GlobalVar();

哈哈,这样的写法是不是有点不像 JS 那种简单,又直接了断的写法了呢?但不关怎样这个语法提示是消失了,问题也就解决了,不用老看到它的出现了。

参考:https://stackoverflow.com/questions/45997225/error-ts2539-cannot-assign-to-c-because-it-is-not-a-variable

 

转载请注明:隨習筆記 » typescript: Cannot assign to ‘XXX’ because it is not a variable