略。
https://www.tslang.cn/docs/handbook/namespaces.htmljavascript
如今,咱們把Validation命名空間分割成多個文件。 儘管是不一樣的文件,它們還是同一個命名空間,而且在使用的時候就如同它們在一個文件中定義的同樣。 由於不一樣文件之間存在依賴關係,因此咱們加入了引用標籤來告訴編譯器文件之間的關聯。 咱們的測試代碼保持不變。html
Validation.tsjava
namespace Validation { export interface StringValidator { isAcceptable(s: string): boolean; } }
LettersOnlyValidator.tstypescript
/// <reference path="Validation.ts" /> namespace Validation { const lettersRegexp = /^[A-Za-z]+$/; export class LettersOnlyValidator implements StringValidator { isAcceptable(s: string) { return lettersRegexp.test(s); } } }
ZipCodeValidator.tsmarkdown
/// <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); } } }
Test.tsasync
/// <reference path="Validation.ts" /> /// <reference path="LettersOnlyValidator.ts" /> /// <reference path="ZipCodeValidator.ts" /> // Some samples to try let strings = ["Hello", "98052", "101"]; // Validators to use let validators: { [s: string]: Validation.StringValidator; } = {}; validators["ZIP code"] = new Validation.ZipCodeValidator(); validators["Letters only"] = new Validation.LettersOnlyValidator(); // Show whether each string passed each validator for (let s of strings) { for (let name in validators) { console.log(`"${ s }" - ${ validators[name].isAcceptable(s) ? "matches" : "does not match" } ${ name }`); } }
第一種方式,略。
第二種方式,咱們能夠編譯每個文件(默認方式),那麼每一個源文件都會對應生成一個JavaScript文件。 而後,在頁面上經過 post