2016-07-12 4 views
1

私はちょうど種類の感触を得ることを試みている、私は複数のファイルに私のコードを分離したいと思っている。私は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 Iを使用して1つのファイルに出力します。 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); 
    } 
} 

これは動作しますが、かなり醜いです。それら2つのブロックを1つにまとめる方法はありますか?

答えて

関連する問題