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

相关文章
相关标签/搜索