TypeScript导出可以重载吗?

时间:2015-09-18 02:44:36

标签: typescript reactjs-flux flux

我在查看通量时发现了一些奇怪的打字稿语法,这没有任何意义。例如;

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究竟做了什么?导出模块和类是否超载?以某种方式混合它们?我不理解这里的语义..

1 个答案:

答案 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中阅读有关“将模块与函数,函数和枚举合并”的更多信息。