# 模块化
> 相关配置:

|   配置名称  |       含义         |
|:———-:| :—————:| 
|     module   |  设置编译结果中使用的模块化标准  |
|    moduleResolution | 设置解析模块的模式  |
| noImplicitUseStrict | 编译结果中不包含 “use strict” |
| removeComments | 编译结果移除注释  |
| noEmitOnError | 错误时不生产编译结果  |
| esModuleInterop | 启用es模块化交互非es模块导出 |


> 前端领域中的模块化标准: ES6 、 commonjs、 amd、 umd、 system、 esnext

> TS中如何书写模块化语句
> 编译结果使用的是什么模块化标准

```tsconfig.json
{
  "compilerOptions": {  //编译选项
    "target": "es2016", //配置编译目标代码的版本标准
    "module": "commonjs", //配置编译目标使用的模块化标准 //es6 、commonjs
    "lib": ["ES2016"],  //配置运行环境,默认dom,现改为node环境,需要安装@types/node 插件
    "outDir": "./dist", //编译结果保存目录
    "strictNullChecks": true, //更加严格的空类型检查,null/undefined不能赋值给其他类型
    "removeComments": true, // 编译结果移除注释
    "noImplicitUseStrict": true, //编译结果 移除 use strict 字符串,关闭严格模式
    "esModuleInterop": true, //启用es模块化交互非es模块导出
    "noEmitOnError": true, //错误时不生产编译结果
  },
  "include": ["./src"], //编译文件夹路径 
  // "files": ["./src/index.ts"],  //指定编译指定文件,以及依赖文件
}
```


# TS中如何书写模块化语句

 TS中,导入和导出模块,统一使用ES6的模块化标准

# 编译结果中的模块化


可配置

TS中的模块化在编译结果中:
– 如果编译结果的模块化标准是ES6: 没有区别  
– 如果编译结果的模块化标准是 commonjs: 导出的声明会变成exports的属性,默认的导出会变成expoerts的default属性;  



# 如何在TS中书写commonjs模块化代码

导出: export = xxx

导入: import xxx = require(“xxx”)

其他内容