2

最近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;
})();

なぜそのように変換されるのですか?

4

1 に答える 1

6

プライベート変数と関数が実行時にプライベートにされない理由は、パフォーマンスの低下によるものです。TypeScriptは、ブラウザとサーバーで実行される大規模なプログラムをサポートするために作成されたため、パフォーマンスは大きな懸念事項です。

TypeScriptがリリースされ、Andersが答えたときに、私は同じ質問をしました。Codeplexに関するディスカッションを表示できます。

于 2013-01-22T09:16:53.660 に答える