T**S中的模块语法与ES6模块保持一致**,是TS1.5之前的外部模块
导出
使用export将模块中的内容导出,可以导出变量、函数、类,以及TS独有的类型别名和接口等
export interface InterfaceName {}
- 导出单个内容,可以使用多次,关键字后只能是声明
export { TestClass, TestClass as WhatClass }
- 导出多个内容(花括号中的都会被导出),可以使用多次,导出内容可以通过 as 设置别名
export */{}/xxx from 'path'
- 将其他模块的内容从自身导出,可以使用多次,语法与静态导入相同
**
export default TestClass
- 模块的默认导出内容,只能使用一次,关键字后可以是任意内容
静态导入
使用import…from将模块内容导入
**
import variable from 'path'
- 导入默认内容,即 export default的内容,变量名随意
import { TestClass, WhatClass as NewClass} from 'path'
- 按需导入 export 导出的内容,括号中的名称必须与导出时完全相同,可以使用 as 设置别名
import * from 'path'
- 导入所有 export 导出的内容
import * as variable from 'path'
- 导入所有 export 导出的内容,并放入一个对象中(variable)
import 'path'
- 有副作用的引入,没用变量接收内容,因此模块内容无法使用,是模块逻辑引入后会执行
- 适合一些不需要复用,只需要执行的逻辑代码
动态导入
import('path')
import...from
在编译时就导入,import()
在程序执行时动态导入- 动态导入是异步的,会返回一个promise,模块内容就在成功的回调中
TS兼容处理
TS为了兼容commonjs与ES6模块,新增了一些东西
const name = 'xxx'
export = name
import variable = require('path')
- 默认导入和导出