为什么打字稿不抱怨某些未定义的变量

Why does typescript not complain about certain undefined variables

我有以下例子:

class Uncle {
  constructor(public name : string) { }

  talk() {
    return "Hello my name is " + name;
  }
}

let p : Uncle = new Uncle("Jo");
console.log(p.talk());

对于某些变量名,typescript(现在是版本 2.1.4)将不会抱怨它们没有在你的程序中定义(在方法讨论中,没有使用名称。)。 name 就是其中之一。

如果我将变量重命名为 firstName,编译器会正确地抱怨...

error TS2663: Cannot find name 'firstName'. Did you mean the instance member 'this.firstName'?

同样适用于例如window,这显然是假定存在的。

我的问题是:

它不会抱怨 name 的原因是全局命名空间中有一个名为 name 的变量。
在开发者工具中打开控制台并输入 name 并按回车,您将收到:"".

更多资源:

所有全局变量无需定义即可使用。

为了删除您可以删除的所有全局定义,例如在您的 tsconfig.json 中,将 "libs" 选项设置为空数组。这将删除 all 全局变量。