2016-07-12 113 views
1

我只是想得到TypeScript的感覺,而且我想將我的代碼分成多個文件。我一直在looking at the documentation,我發現我想用命名空間來尋找。我使用的文件在這裏的例子:有沒有辦法在輸出中結合命名空間?

Validation.ts:

namespace Validation { 
    export interface StringValidator { 
     isAcceptable(s: string): boolean; 
    } 
} 

LettersOnlyValidator.ts:

/// <reference path="Validation.ts" /> 
namespace Validation { 
    const lettersRegexp = /^[A-Za-z]+$/; 
    export class LettersOnlyValidator implements StringValidator { 
     isAcceptable(s: string) { 
      return lettersRegexp.test(s); 
     } 
    } 
} 

ZipCodeValidator.ts:

/// <reference path="Validation.ts" /> 
namespace Validation { 
    const numberRegexp = /^[0-9]+$/; 
    export class ZipCodeValidator implements StringValidator { 
     isAcceptable(s: string) { 
      return s.length === 5 && numberRegexp.test(s); 
     } 
    } 
} 

我跟隨該示例並使用tsc我輸出到一個文件。 TypeScript生成此:

var Validation; 
(function (Validation) { 
    var lettersRegexp = /^[A-Za-z]+$/; 
    var LettersOnlyValidator = (function() { 
     function LettersOnlyValidator() { 
     } 
     LettersOnlyValidator.prototype.isAcceptable = function (s) { 
      return lettersRegexp.test(s); 
     }; 
     return LettersOnlyValidator; 
    }()); 
    Validation.LettersOnlyValidator = LettersOnlyValidator; 
})(Validation || (Validation = {})); 
var Validation; 
(function (Validation) { 
    var numberRegexp = /^[0-9]+$/; 
    var ZipCodeValidator = (function() { 
     function ZipCodeValidator() { 
     } 
     ZipCodeValidator.prototype.isAcceptable = function (s) { 
      return s.length === 5 && numberRegexp.test(s); 
     }; 
     return ZipCodeValidator; 
    }()); 
    Validation.ZipCodeValidator = ZipCodeValidator; 
})(Validation || (Validation = {})); 
var strings = ["Hello", "98052", "101"]; 
var validators = {}; 
validators["ZIP code"] = new Validation.ZipCodeValidator(); 
validators["Letters only"] = new Validation.LettersOnlyValidator(); 
for (var _i = 0, strings_1 = strings; _i < strings_1.length; _i++) { 
    var s = strings_1[_i]; 
    for (var name_1 in validators) { 
     console.log("\"" + s + "\" " + (validators[name_1].isAcceptable(s) ? " matches " : " does not match ") + name_1); 
    } 
} 

這工作,但是相當醜陋。有沒有辦法讓它將這兩個塊合併爲一個?

回答

相關問題