我在查看通量时发现了一些奇怪的打字稿语法,这没有任何意义。例如;
class Action {
private _source: Action.Source
constructor( source: Action.Source ) {
this._source = source
}
get source() {
return this._source
}
}
module Action {
export enum Source {
View,
Server
}
}
export = Action
export = Action究竟做了什么?导出模块和类是否超载?以某种方式混合它们?我不理解这里的语义..
答案 0 :(得分:1)
它正在使用声明合并。幕后发生的事情基本上是这样的:
// class is defined
function Action(source) {
this._source = source;
}
Object.defineProperty(Action.prototype, "source", {
get: function () {
return this._source;
},
enumerable: true,
configurable: true
});
// enum is defined on the Source property of Action—NOT on Action's prototype
Action.Source = ...enum object definition...
export = Action;
在Handbook中阅读有关“将模块与函数,函数和枚举合并”的更多信息。