2015-09-18 2 views
0

Я нашел некоторый странный синтаксис машинописных шрифтов при взгляде на поток, что не имеет никакого смысла. Например;Может ли перегрузка экспорта TypeScript?

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 

Что именно делает экспорт = Действие здесь? Перегружается ли он для экспорта модуля и класса? Смешивание их каким-то образом? Я не понимаю семантику здесь.

ответ

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.

Смежные вопросы