【发布时间】:2016-11-24 04:31:03
【问题描述】:
这是生成的打字稿代码和相应的 JavaScript。 为什么微软选择使用 this.greeting 而不是使用 var 并在生成的 js 代码中隐藏变量以防止从外部访问?在打字稿中将属性更改为私有只会引发编译错误,但生成的js代码同上
//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'
【问题讨论】:
标签: javascript typescript