生成 tsconfig 文件

使用命令行:

  1. tsc --init

自动生成一个 tsconfig.json 配置文件。

  1. {
  2. "compilerOptions": {
  3. /* Basic Options */
  4. "target": "es5",
  5. "module": "commonjs",
  6. "strict": true,
  7. "esModuleInterop": true
  8. //...
  9. }
  10. }

配置选项

文件相关选项:

  • files:表示编译器需要编译的单个文件的列表,是一个数组
  • include:表示编译器需要编译的文件或者是目录,是一个数组
  • exclude:表示编译器需要排除的文件或者文件夹,是一个数组,默认会排除 node_modules 以及声明文件
  • extends:表示继承某个配置文件中的配置
  • compileOnSave:在保存之后自动编译,VSCode 暂不支持,Atom 需要安装插件支持

编译相关选项:

  • target:目标语法,要编译成 JavaScript 的哪个版本,默认 ES3
    • ‘ES3’ (default), ‘ES5’, ‘ES2015’, ‘ES2016’, ‘ES2017’,’ES2018’ or ‘ESNEXT’
  • module:使用的模块规范
    • ‘none’, ‘commonjs’, ‘amd’, ‘system’, ‘umd’, ‘es2015’, or ‘ESNext’
  • outFile:将多个相互依赖的文件生成一个文件,一般用于 AMD 模块中
  • outDir:输出的文件目录
  • rootDir:指定输入文件目录,默认是当前目录,输出时会包含编译目录,用于控制输出目录结构
  • strict:是否使用严格模式

  • incremental:增量编译, TS 可以在第一次编译之后,生成一个可以存储编译信息的文件,然后在二次编译的时候,根据这个文件进行增量编译,可以提高编译速度

  • diagnostics:打印诊断信息
  • tsBuildInfoFile: 增量编译文件保存的位置

  • lib:TS 需要引用的库,即声明文件。默认 ES5 时,会引入 dom、es5、scripthost 这三个库。当使用更高版本时,需要引入其他的类库,如 es2019.array

  • allowJs:是否允许编译 JS 文件(js、jsx)

  • checkJs:允许在 JS 文件中报错,通常与 allowJs 一起使用

  • sourceMap:生成目标文件的 sourceMap

  • inlineSourceMap:生成目标文件的 inline sourceMap

  • removeComment:删除注释

  • noEmit:不输出文件
  • noEmitOnError:发生错误时不输出文件
  • noEmitHelpers:不生成 helper 函数,以前需额外安装 ts-helpers,即减小编译后文件的体积
  • importHelpers:通过 tslib 引入 helper 函数,文件必须是模块,生成的文件中就会引入 tslib 来使用 helper 函数

声明文件相关选项:

  • declaration:生成声明文件
  • declarationDir:声明文件的路径
  • emitDeclarationOnly:只生成声明文件,而不生成 JS 文件
  • declarationMap:生成声明文件的 sourceMap
  • typeRoots:声明文件目录,默认是 node_modules/@types
  • types:声明文件列表

strict 相关选项:

  • strict:开启所有严格的类型检查,如果开启了,那么下面这些配置默认都会开启
  • alwaysStrict:在代码中注入 “use strict”
  • noImplicitAny:不允许隐式的 any
  • strictNullChecks:不允许把 null、undefined 赋值给其他类型
  • strictFunctionTypes:不允许函数参数双向协变
  • strictPropertyInitalization:类的实例属性必须初始化
  • strictBingCallApply:严格的 bind/call/apply 的检查
  • noImplicitThis:不允许 this 有隐式的 any 类型

其他:

  • downleveliteration:降级遍历器的实现
  • noUnusedLocals:检查只声明,未使用的局部变量
  • noUnusedParameters:检查未使用的函数参数
  • noFallthrouthCasesInSwitch:防止 switch 语句贯穿
  • noImplicitReturns:每个分支都要有返回值

  • esModuleInterop:允许 export = 导出,由 import from 导入

  • allowUmdGlobalAccess:允许在模块中访问 UMD 全局变量
  • moduleResolution:模块解析策略,默认 node,classic
  • baseUrl:基地址
  • paths:路径映射,相对于 baseUrl
  • rootDirs:将多个目录放到一个虚拟目录下,用于运行时
  • listEmittedFiles:打印输出文件
  • listFiles:打印编译文件