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

时间:2016-12-19 13:08:11

标签: 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,编译器会正确地抱怨......

  

错误TS2663:找不到名称' firstName'。你的意思是实例成员' this.firstName'?

同样适用于窗口,显然假设存在。

我的问题是:

  • 假设存在哪些变量名称,为什么?
  • 是否可以改变这种行为(例如,在某些短语中,您可以说明您希望全局可用的变量)?

1 个答案:

答案 0 :(得分:4)

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

更多资源:

可以使用所有全局变量而无需定义它们。

为了删除所有可能的全局定义,例如在"libs"中,将while ($row = $query->fetch_assoc()) { $data[] = [ "value" => $row['Partno'] , "label" => $row['Partno']." ".$row['Description']." ".$row['Bname']." ".$row['Cname']]; } 选项设置为空数组。这将删除所有全局变量。