Microsoft/TypeScript

namespace / module: Duplicate declaration & needlessly remove line-breaks

Open

#5553 aperta il 6 nov 2015

Vedi su GitHub
 (5 commenti) (0 reazioni) (0 assegnatari)TypeScript (6726 fork)batch import
Help WantedSuggestion

Metriche repository

Star
 (48.455 star)
Metriche merge PR
 (Merge medio 6g 17h) (9 PR mergiate in 30 g)

Descrizione

I wonder why TSC re-declare a global var after each namespace or module block.

namespace OurName {
    export var isAndroid = true;
    export var isWinPhone = false;
    // do something
    var checkCookies = function() {
        return true;
    }
}

namespace OurName {
    export var HTML = '<b>hello</b>';
    export var state = [1, 2, 3];
    export var addToCart = function() {
        return true;
    }
}

namespace OurName {
    var xyz = false;
    // do something
    export module Office {
        var isClosed = false;
    }
}

Above code is translated to:

var OurName;
(function (OurName) {
    OurName.isAndroid = true;
    OurName.isWinPhone = false;
    // do something
    var checkCookies = function () {
        return true;
    };
})(OurName || (OurName = {}));
var OurName;
(function (OurName) {
    OurName.HTML = '<b>hello</b>';
    OurName.state = [1, 2, 3];
    OurName.addToCart = function () {
        return true;
    };
})(OurName || (OurName = {}));
var OurName;
(function (OurName) {
    var xyz = false;
    // do something
    var Office;
    (function (Office) {
        var isClosed = false;
    })(Office = OurName.Office || (OurName.Office = {}));
})(OurName || (OurName = {}));

It also removes the line-breaks that help me keeping the code easier to look. I am porting our production ES5 code to TypeScript, so I have to carefully re-check the output of TSC. This behaviour makes my work even harder.

Guida contributor