javascript - TypeScript, bir yöntemdeyken "this" ifadesinin atlanmasına neden izin veriyor?
Aşağıdaki TypeScript hatasız derlenir:
class Something {
name: string;
constructor() {
name = "test";
}
}
Bu kod hatasız derlenir, sanki name değişkeninin var olduğuna inanıyormuş gibi. Ancak this anahtar kelimesini atladığım için çalışmayacak js üretir:
/Users/cburtbrown/Documents/code/ts/js/tstest.js:6
console.log(name);
^
ReferenceError: name is not defined
at Something.action (/Users/cburtbrown/Documents/code/ts/js/tstest.js:6:21)
at Object.<anonymous> (/Users/cburtbrown/Documents/code/ts/js/tstest.js:10:25)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:456:32)
at tryModuleLoad (module.js:415:12)
at Function.Module._load (module.js:407:3)
at Function.Module.runMain (module.js:575:10)
at startup (node.js:159:18)
at node.js:444:3
Eğer yapıcıda değişkeni yanlış yazarsam, bu hatayla başarısız olur:
Cannot find name 'namej'
Bu hata, değişken doğru yazılmış olsa bile meydana gelmemeli mi?
Cevap #1
Çünkü window nesnesinin bir name özelliği vardır.
TypeScript söz konusu olduğunda, bu özelliğe bir değer atamaya çalışıyorsunuz. Elbette, tarayıcıda çalışmıyorsanız bu başarısız olacaktır.
Bunu kendiniz test edebilirsiniz, başka herhangi bir window özelliğine bir değer atamaya çalışarak.
Örnek :
class Something {
name: string;
constructor() {
status = "test";
}
}
