TypeScript基础-模块

TypeScript 模块


从TypeScript 1.5开始,内部模块称作“命名空间”,外部模块则简称为“模块”;

模块构造出了一个独立的作用域,模块内的变量、函数、类在模块外部不可见;如果想要暴露 A 模块内的 a 函数给 B 模块,需要在 A 中使用 export 语法,同时在 B 模块中 import 从 A 暴露出的 a 函数(可以改变 B 中引用的函数名称);这是模块成员间的通信;

两个模块级别关系的建立是通过 imports 和 exports 实现的,也就是文件路径的关联;

模块间的通信和导入,依赖于模块加载器,如:CommonJS(nodejs)、RequireJS(web);

TypeScript 中,任何包含了顶级 import 或者 export 的文件都会被当成一个模块;


导出声明

任何声明(变量、函数、类、类型别名、接口)都可以通过添加 export 关键字来导出;

export interface StringValidator {

    isAcceptable(s: string): boolean;

}

导出语句

另一种导出方式

class ZipCodeValidator implements StringValidator {

    ...

}

export { ZipCodeValidator };

// 重命名

export { ZipCodeValidator as mainValidator };

默认导出

每个模块可以有且只能有一个 default 导出,使用 default 关键字标记,导入时需要使用特殊的导入形式

declare let $: JQuery;

export default $;

---

import $ from 'JQuery';

标记为默认导出的类和函数的名字可以省略(匿名函数)

export default class ZipCodeValidator {

    ...

}

---

import validator from './ZipCodeValidator';

default 也可以导出一个值

重新导出

重新导出可以在当前模块不加载目标模块的情况下,导出目标模块的部分内容

export { ZipCodeValidator as Zip } from './ZipCodeValidator';

另一种用法,将多个模块的导出内容联合在一起导出

export * from "./StringValidator";
export * from "./LettersOnlyValidator";

导入

import { ZipCodeValidator } from './ZipCodeValidator';

let myValidator = new ZipCodeValidator();

重命名

import { ZipCodeValidator as ZCV } from './ZipCodeValidator';

将整个模块导入到一个变量,并通过它来访问模块的真正导出部分

import * as validator from './ZipCodeValidator';

let myValidator = new validator.ZipCodeValidator();

export = & import = require()

为了支持传统的 CommonJS 和 AMD 的工作流模型,使用 export = 定义一个模块的导出对象,另一个模块使用时 import let = require(‘module’);


生成模块代码

TypeScript 可以根据指定的模块目标参数,编译器会生成相应的供 Node.js(CommonJS),RequireJS(AMD),isomorphic(UMD),SystemJS或ES6 native modules 模块加载系统使用的代码

**

前行的路上,感谢您的鼓励!!

**

猜你喜欢

转载自blog.csdn.net/lzch2105/article/details/53821230