javascript - 为什么 typescript 不提示某些 undefined variable

标签 javascript typescript tsc

我有以下示例:

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'?

同样适用于例如窗口,显然假定它存在。

我的问题是:

  • 假定存在哪些变量名,为什么?
  • 是否可以更改该行为(例如,在某些 linter 中,您可以说明您希望哪些变量全局可用)?

最佳答案

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

更多资源:

所有全局变量都可以在不定义的情况下使用。

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

关于javascript - 为什么 typescript 不提示某些 undefined variable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41223305/

相关文章:

windows - 如何在 Windows 上以 'Watch output files' 模式 (tsc -w) 使用 TypeScript 编译器?

typescript - 发出的 .d.ts 文件中的返回类型是 any 而不是 this

Chrome 和 Internet Explorer 中的 javascript 数组

javascript - 最小最大价格范围验证不适用于 jquery.validate.js

javascript - EmberJs ember-data 与 ember-localstorage-adapter

typescript - 将多个文件内部模块编译成一个文件AMD模块

typescript - createClient 返回的类型是什么?

javascript - 如何用一个按钮调用两个函数

angular - Map 和 Filter 适用于两个数组元素,但在看似相同的第三个元素上失败

javascript - TypeScript 无法正确编译