Ceci est un exemple très artificiel, mais supposons que nous créons une variable _thisquelque part dans une fonction de classe.
class Person {
constructor (public name : string) {}
changeName(name) {
var _this = {};
(() => {
this.name = name;
})();
}
}
Cela ne fonctionnera pas comme prévu lorsque nous appelons la changeNamefonction parce que la partie pertinente du code compilé ressemble à ceci:
var _this = this;
var _this = {};
(function () {
_this.name = name;
})();
Ce qui est mauvais Javascript: nous avons deux vardéclarations l'autre écrasant. Le _thiscréé par le compilateur est écrasé par mon _this.
Pour autant que je peux voir, ce comportement est spécifié dans la spécification dactylographiée.
Pourquoi devraient - ils en conflit? Ne peut pas détecter le compilateur si j'ai créé une variable nommée _thiset le nom d' autre généré automatiquement une chose, comme _this2de garder mes variables et celles générées par le compilateur de piétiner les uns des autres?













