typescript - 8.命名空間

基礎

略。
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

相關文章
相關標籤/搜索