ts config

{
  // 指定编译器将编译的TypeScript文件版本
  "target": "es6",

  // 指定生成哪个模块系统代码
  "module": "commonjs",

  // 启用严格类型检查
  "strict": true,

  // 允许编译未使用的本地变量或函数
  "allowUnusedLabels": false,

  // 报告使用过的标签错误
  "allowUnreachableCode": false,

  // 如果编译器检测到文件使用不同版本的库,就会发出警告
  "alwaysStrict": true,

  // 是否检查周围文件,并记录视为错误的文件
  "assumeChangesOnlyAffectDirectDependencies": false,

  // 当使用 --build 时,遇到出错则会终止
  "baseUrl": ".",

  // 不生成jspm程序包
  "declaration": true,

  // 生成相应的 '.d.ts' 文件
  "declarationDir": "./types",

  // '.d.ts'文件输出目录
  "diagnostics": true,

  // 显示诊断信息
  "downlevelIteration": true,

  // 为for...of, spread, 和generator,生成ES5代码
  "emitBOM": false,

  // 在输出文件开头加上BOM头(UTF-8 Byte Order Mark)
  "emitDecoratorMetadata": true,

  // 给源码里的装饰器声明加上设计类型元数据
  "experimentalDecorators": true,

  // 使用装饰器特性
  "forceConsistentCasingInFileNames": true,

  // 禁止对同一个文件使用不一致的大小写
  "importHelpers": true,

  // 引入tslib导入助手函数,编译后的JS文件体积会变小
  "incremental": true,

  // 增量编译,一旦文件被编译过,就往osncreat文件里写一个记录文件
  "inlineSourceMap": true,

  // 生成单个SourceMaps文件,而不是将每个文件 都生成 '.map' 文件
  "inlineSources": true,

  // 将代码和sourceMap生成到一个文件
  "isolatedModules": true,

  // 无条件的给没有导入语句的文件生成imports
  "jsx": "preserve",

  // 在'.tsx'文件里支持 JSX
  "lib": [],

  // 编译工程所需要的库文件列表
  "listEmittedFiles": false,

  // 打印出编译后被传出文件的路径
  "listFiles": false,

  // 打印出编译文件及其源文件的名称
  "maxNodeModuleJsDepth": 0,

  // node_modules依赖的编译失败时抛出错误
  "module": "commonjs",

  // 指定生成哪个模块系统的代码
  "moduleResolution": "node",

  // 决定如何处理模块
  "newLine": "lf",

  // 在生成文件时的当行符使用符号
  "noEmit": true,

  // 不生成输出文件
  "noEmitHelpers": false,

  // 不在输出文件中生成用户自己定义的帮助类
  "noEmitOnError": false,

  // 发生错误时不生成输出文件
  "noErrorTruncation": false,

  // 不截短错误消息
  "noFallthroughCasesInSwitch": false,

  // switch语句是否报告fallthrough错误
  "noImplicitAny": true,

  // 是否默认禁用any
  "noImplicitReturns": true,

  // 不是函数的根必须有返回值
  "noImplicitThis": true,

  // 当this表示any类型时是否发出错误
  "noImplicitUseStrict": false,

  // 模块是否创建命名空间
  "noLib": false,

  // 不加载默认库文件
  "noResolve": false,

  // 不把 /// <reference``>或模块导入的文件加到编译文件里
  "noStrictGenericChecks": false,

  // 是否对没有设定默认值的泛型不适用双向协变/确变位检查
  "noUnusedLocals": false,

  // 用于 阻止对命名代码的未使用本地的定义发出警告
  "noUnusedParameters": false,

  // 用于 阻止对命名代码的未使用参数的定义发出警告
  "outDir": "./dist",

  // 指定输出目录
  "outFile": "./dist/bundle.js",

  // 将程序编译为一个文件。
  "paths": {},

  // 模块名映射,将模块重定向到另外一个路径
  "plugins": [],

  // 要从编译器加载的插件列表
  "preserveConstEnums": false,

  // 如何处理常量枚举,或为生成代码保留const枚举
  "preserveSymlinks": false,

  // 不把符号链接解析为其真实路径;应对于符号路径使用工具或者库
  "preserveWatchOutputPath": false,

  // 保留监视输出文件夹的结构
  "pretty": false,

  // 使用可读的相对路径
  "project": "./tsconfig.json",

  // 编译工程的路径
  "reactNamespace": "React",

  // 为创建对React导入的指定JSX工厂覆盖以及生成命名空间声明
  "removeComments": false,

  // 删除编译后的所有注释
  "resolveJsonModule": false,

  // 使用webpack等导入器解析扩展名为.json的文件
  "rootDir": "./",

  // 仅用来控制输出的目录结构 --outDir
  "rootDirs": [],

  // 根文件夹列表
  "skipDefaultLibCheck": false,

  // 忽略所有的声明文件的类型检查
  "skipLibCheck": false,

  // 是否忽略目录下所有的声明文件的类型检查
  "sourceMap": true,

  // 生成相应的.map文件
  "sourceRoot": "./",

  // 指定TypeScript源文件目录
  "strictBindCallApply": true,

  // 对bind/call/apply监视严格
  "strictNullChecks": true,

  // 设置为true,null和undefined值不能赋给非这两种类型的变量
  "stripInternal": false,

  // 不对内部代码用strip处理
  "suppressExcessPropertyErrors": false,

  // 阻止"不同代码单元引用互不可见的类型检查器符号"错误
  "suppressImplicitAnyIndexErrors": false, 

  // 阻止"缺少索引签名"错误
  "traceResolution": false,

  // 输出模块和目录的策略现场数据
  "tsBuildInfoFile": "./",

  // 指定生成文件的存储目录
  "typeRoots": [],

  // 包含类型声明的文件目录列表
  "types": [],

  // 要包含的类型声明的文件名列表
  "watch": true,

  // 在监听模式下运行编译器
  "version": false,

  // 打印编译器的版本
  "lib": ["es5", "es6", "dom"],

  // 需要使用的库文件列表
  "jsx": "react",

  // 指定JSX代码生成目标
  "outFile": "./dist/app.js",

  // 将输出内容合并到一个文件
  "allowJs": true,

  // 允许编译JS文件
  "checkJs": false,

  // 在在 .js 文件中报告错误,与allowJS一起使用
  "maxNodeModuleJsDepth": 1, // 最大允许依赖的node_module依赖包
  
  "allowSyntheticDefaultImports": true // 允许从没有默认导出的模块中默认导入

  // 指定要包含在编译中的文件或目录。
  "include":
    [
      "src/**/*"
    ],
  
  // 指定应排除在编译之外的文件或目录。
  "exclude": 
    [
      "node_modules",
      "**/*.spec.ts"
    ],

  // 将指定目录下的指定文件编译为一个命名空间
  "composite": true 
}