T**S中的模块语法与ES6模块保持一致**,是TS1.5之前的外部模块

导出

使用export将模块中的内容导出,可以导出变量、函数、类,以及TS独有的类型别名和接口等

  1. export interface InterfaceName {}
  • 导出单个内容,可以使用多次,关键字后只能是声明
  1. export { TestClass, TestClass as WhatClass }
  • 导出多个内容(花括号中的都会被导出),可以使用多次,导出内容可以通过 as 设置别名
  1. export */{}/xxx from 'path'
  • 将其他模块的内容从自身导出,可以使用多次,语法与静态导入相同

**

  1. export default TestClass
  • 模块的默认导出内容,只能使用一次,关键字后可以是任意内容

静态导入

使用import…from将模块内容导入
**

  1. import variable from 'path'
  • 导入默认内容,即 export default的内容,变量名随意
  1. import { TestClass, WhatClass as NewClass} from 'path'
  • 按需导入 export 导出的内容,括号中的名称必须与导出时完全相同,可以使用 as 设置别名
  1. import * from 'path'
  • 导入所有 export 导出的内容
  1. import * as variable from 'path'
  • 导入所有 export 导出的内容,并放入一个对象中(variable
  1. import 'path'
  • 有副作用的引入,没用变量接收内容,因此模块内容无法使用,是模块逻辑引入后会执行
  • 适合一些不需要复用,只需要执行的逻辑代码

动态导入

  1. import('path')
  • import...from 在编译时就导入,import() 在程序执行时动态导入
  • 动态导入是异步的,会返回一个promise,模块内容就在成功的回调中

TS兼容处理

TS为了兼容commonjs与ES6模块,新增了一些东西

  1. const name = 'xxx'
  2. export = name
  3. import variable = require('path')
  • 默认导入和导出