Вот код машинописного текста и соответствующий JavaScript, который сгенерирован. Почему microsoft решила использовать this.greeting вместо использования var и скрытия переменной от доступа извне в сгенерированном js-коде? изменяя свойство частного в машинописи только бросаешь ошибку компиляции, но сгенерированный JS код Dittoчастная публика в машинописном документе
//typescript code
class Greeter {
greeting: string; //why is this not private by default???
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");
console.log(greeter.greeting); //why the heck is 'greeting accessible'
//Generated javascript as follows
var Greeter = (function() {
function Greeter(message) {
this.greeting = message; //this should have been a var ????
}
Greeter.prototype.greet = function() {
return "Hello, " + this.greeting;
};
return Greeter;
}());
var greeter = new Greeter("world");
console.log(greeter.greeting); //why the heck is 'greeting accessible'