我有以下示例:
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/