Typescript命名空间转换为Javascript

时间:2014-03-17 09:25:28

标签: javascript typescript

对于给定打字稿,在模块中定义了一个类

module league{
    export class Player {
        first_name: string;
        last_name: string;

        constructor(first_name: string, last_name: string){
            this.first_name = first_name;
            this.last_name=last_name;
        }
    }
}

并将其翻译为javascript:

var league;
(function (league) {
    var Player = (function () {
        function Player(first_name, last_name) {
            this.first_name = first_name;
            this.last_name = last_name;
        }
        return Player;
    })();
    league.Player = Player;
})(league || (league = {}));
打字稿代码很容易理解,但对javascript不太熟悉,任何人都可以解释它生成的javascript背后的逻辑吗?

1 个答案:

答案 0 :(得分:5)

模块

module的逐行说明:

var league;

因此,javascript不会抛出我们正在使用未定义变量的错误。

(function (league) {
}()

立即执行的功能。必需,因为scope仅由javascript中的函数创建。

league || (league = {}

这样模块可以分成多个部分。如果已使用它,则使用||我们创建它league = {}

我想这就是你所追求的。课程是一个单独的科目。

逐行。同样是一个立即执行的函数来创建一个新的范围(另外它将有助于继承,但在这里不相关):

var Player = (function () {

})();

身体只是一个使用function的{​​{1}}:

this

更多

要了解有关立即执行函数的更多信息,请 function Player(first_name, last_name) { this.first_name = first_name; this.last_name = last_name; } 我推荐一本javascript书。例如JavaScript好的部分。