最近开始学习Typescript。我对从Typescript到Javascript的转换有疑问。
为什么这段代码:
class Greeter {
greeting: string;
private hello(){
return this.greeting;
}
public hi(){
alert(this.hello());
}
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
转换为
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.hello = function () {
return this.greeting;
};
Greeter.prototype.hi = function () {
alert(this.hello());
};
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
})();
不是吗?
var Greeter = (function () {
var hello = function(){
return this.greeting;
}
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.hi = function () {
alert(hello.call(this));
};
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
})();
为什么会这样转换?
答案 0 :(得分:6)
私有变量和函数在运行时不是私有的原因是性能受到影响。创建TypeScript是为了支持在浏览器和服务器上运行的大型程序 - 因此性能是一个巨大的问题。
当TypeScript发布并且Anders回答时,我问了同样的问题。你可以view the discussion on Codeplex。