聚合模块
其他模块的模块导出作为当前模块的模块导出成为聚合模块。语法使用export...from...
。模块中我们可以选择默认模块导出作为当前模块的默认模块导出。也可以选择部分模块导出作为当前模块的模块导出。还可以选择非默认模块导出作为当前模块的默认模块导出。也可以选择所有非默认模块导出作为当前模块的模块导出。也可以选择所有非默认模块导出并且更改名为当前模块的模块导出。我们需要注意的是在聚合模块时不会引入任何本地声明。
export { x, y } from 'zss'
export { default } from 'zss'
export { x as default } from 'zss'
export * as po from 'zss'
模块导出使用import
关键字。我们可通过导出的名称来导入它。我们也可以一次性将所有模块进行导入。导入默认模块导出时import后面跟着的是导入的默认模块导出在当前模块中所绑定的标识符。空导入的语句不会导入任何模块导出。如果模块重命名,那么重命名模块的导入和导出我们使用as
关键字去定义。
import zss from 'peo';
import 'peo';
export { zss as tea };
动态模块导入通过import()
函数来实现。这个函数接收一个模块路径作为参数,并返回Promise
对象。动态模块可以在模块任意位置使用也可以在非模块中使用。
外部声明
外部类型声明关键字是delete
。其中包括外部变量声明、外部函数声明、外部类声明、外部枚举声明和外部命名空间声明。如果外部声明变量只表示一种类型,那么外部变量声明不允许定义初始值。如果外部变量声明中没有使用类型注解,那么变量的类型为any
类型。如果外部类声明使用declare class
关键字定义,那么外部声明中的成员不允许带有具体实现,只允许定义类型。外部枚举声明和常规的枚举声明语法是一样的。需要注意的是外部声明中,枚举成员的值必须为常量枚举表达式。如果使用了declare enum
的外部枚举中,枚举成员省略了初始值,就会被视为计算枚举成员。
declare vas x: boolean;
declare let y: boolean;
declare const z: boolean;
外部命名的成员默认为导出成员,是不需要使用export关键字,但是如果我们使用了export
关键字也不会报错的。