对于给定打字稿,在模块中定义了一个类
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背后的逻辑吗?
答案 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好的部分。