最近在写 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 那种简单,又直接了断的写法了呢?但不关怎样这个语法提示是消失了,问题也就解决了,不用老看到它的出现了。
转载请注明:隨習筆記 » typescript: Cannot assign to ‘XXX’ because it is not a variable