6
我下面舉個例子:爲什麼不打字稿抱怨某些未定義的變量
class Uncle {
constructor(public name : string) { }
talk() {
return "Hello my name is " + name;
}
}
let p : Uncle = new Uncle("Jo");
console.log(p.talk());
對於某些變量名,打字稿(現在版本2.1.4)將不抱怨說,他們不在你的程序中定義(在方法說話中,名字在沒有這個的情況下被使用)。 name
就是其中之一。
如果我重命名變量,比方說,firstName
,編譯器會抱怨理所當然......
錯誤TS2663:找不到名稱「名字」。你的意思是實例成員'this.firstName'?
同樣適用於例如窗口,這顯然被認爲是存在的。
我的問題(S)是:
- 這是假設變量名存在,爲什麼呢?
- 是否可以改變這種行爲(例如,在某些情況下,您可以指出您希望全局可用的變量)?
你知道是否有辦法解決這個問題? – flq
打開什麼?變量'name'存在,你希望編譯器做什麼? –
不一定例如當你爲node.js應用程序編寫代碼時,窗口和朋友不會存在。在這種情況下,如果編譯器不會假設這些全局變量的存在,那將會很好。 – flq