将Typescript命名空间转换为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 = {}));

typescript代码很容易理解,但不太熟悉javascript,谁能解释它生成的javascript背后的逻辑?

Module

module的逐行解释:

var league;

所以javascript不会抛出一个错误,我们正在使用一个未定义的变量。

(function (league) {
}()

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

league || (league = {}

这样模块就可以分成多个部分。如果已定义,则使用||,否则创建league = {}

我想这就是你想要的。类是一个单独的主题。 <标题> 类

逐行。再次使用一个立即执行的函数来创建一个新的作用域(另外,它将有助于继承,但在这里不相关):

var Player = (function () {
})();

正文是function,使用this:

    function Player(first_name, last_name) {
        this.first_name = first_name;
        this.last_name = last_name;
    }
<标题>更多h1> 了解更多关于立即执行函数和this的知识,我推荐一本javascript书籍。例如JavaScript的好部分。

最新更新