1. pnpm install -g typescript // 全局安装typescript
    2. tsx -v // 检测是否安装成功
    3. tsx -init // 初始化 tsconfig.json
    1. {
    2. "compilerOptions": {
    3. /**************基础配置**************/
    4. /**************基础配置**************/
    5. /**************基础配置**************/
    6. /* 开启增量编译:TS 编译器在第一次编译的时候,会生成一个存储编译信息的文件,下一次编译的时候,会根据这个文件进行增量的编译,以此提高 TS 的编译速度 */
    7. "incremental": true,
    8. /* 指定存储增量编译信息的文件位置 */
    9. "tsBuildInfoFile": "./",
    10. /* 打印诊断信息 */
    11. "diagnostics": true,
    12. /* 打印输出的文件 */
    13. "listEmittedFiles": true,
    14. /* 打印编译的文件(包括引用的声明文件)*/
    15. "listFiles": true,
    16. /* 指定 ECMAScript 的目标版本: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
    17. "target": "es5",
    18. /* 指定模块代码的生成方式: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
    19. "module": "commonjs",
    20. /* 指定要包含在编译中的库文件——引用类库——即申明文件,如果输出的模块方式是 es5,就会默认引入 "dom","es5","scripthost" */
    21. /* 如果在 TS 中想要使用一些 ES6 以上版本的语法,就需要引入相关的类库 */
    22. "lib": [],
    23. /* 允许编译 JS 文件 */
    24. "allowJs": true,
    25. /* 检查 JS 文件*/
    26. "checkJs": true,
    27. /* 指定 JSX 代码生成的模式: 'preserve', 'react-native', or 'react'. */
    28. /* 'react' 模式下:TS 会直接把 jsx 编译成 js */
    29. /* 'preserve' 模式下:TS 不会把 jsx 编译成 js,会保留 jsx */
    30. "jsx": "preserve",
    31. /**************声明文件相关配置**************/
    32. /**************声明文件相关配置**************/
    33. /**************声明文件相关配置**************/
    34. /* 生成相应的类型声明文件 —— '.d.ts' */
    35. "declaration": true,
    36. /* 声明文件的输出路径 */
    37. "declarationDir": "./d",
    38. /* 只生成声明文件,不生成 JS */
    39. "emitDeclarationOnly": true,
    40. /* 声明文件目录,默认 node_modules/@types */
    41. "typeRoots": [],
    42. /* 要导入的声明文件包,默认导入上面声明文件目录下的所有声明文件 */
    43. "types": [],
    44. /* 将多个相互依赖的文件合并并且把编译后的内容输出到一个文件里
    45. * 可以用在产出 AMD 模块的场景中
    46. * "module":"amd" 时,当一个模块引入了另外一个模块,编译的时候会把这两个模块的编译结果合并到一个文件中
    47. */
    48. "outFile": "./",
    49. /* 指定编译文件的输出目录 */
    50. "outDir": "./out",
    51. /* 指定输入文件的根目录,用于控制输出目录的结构 */
    52. "rootDir": "./",
    53. /* 启用项目编译 */
    54. "composite": true,
    55. /* 输出的时候移除注释 */
    56. "removeComments": true,
    57. /* 不输出文件 */
    58. "noEmit": true,
    59. /* 发生错误时不输出文件 */
    60. "noEmitOnError": true,
    61. /* 不生成 helper 函数,以前的话设置为 true 后,需要额外安装 ts-helpers */
    62. /* 类似于 babel ,会给每个文件都生成 helper 函数,会使得最终编译后的包的体积变大 */
    63. "noEmitHelpers": true,
    64. /* 现在可以通过 tslibTS 内置的库)引入 helper 函数,!!!文件必须是模块 !!! */
    65. /* 编译后自动引入 var tslib_1 = require("tslib") */
    66. "importHelpers": true,
    67. /* 当目标是 ES5 ES3 的时候提供对 for-of、扩展运算符和解构赋值中对于迭代器的完整支持 */
    68. "downlevelIteration": true,
    69. /* 把每一个文件转译成一个单独的模块 */
    70. "isolatedModules": true,
    71. /**************严格检查配置**************/
    72. /**************严格检查配置**************/
    73. /**************严格检查配置**************/
    74. /* 开启所有的严格检查配置 */
    75. "strict": true,
    76. /* 不允许使用隐式的 any 类型 */
    77. "noImplicitAny": true,
    78. /* 不允许把 nullundefined 赋值给其他类型变量 */
    79. "strictNullChecks": true,
    80. /* 不允许函数参数双向协变 */
    81. "strictFunctionTypes": true,
    82. /* 使用 bind/call/apply 时,严格检查函数参数类型 */
    83. "strictBindCallApply": true,
    84. /* 类的实例属性必须初始化 */
    85. "strictPropertyInitialization": true,
    86. /* 不允许 this 有隐式的 any 类型,即 this 必须有明确的指向*/
    87. "noImplicitThis": true,
    88. /* 在严格模式下解析并且向每个源文件中注入 "use strict" */
    89. "alwaysStrict": true,
    90. /**************额外的语法检查配置,这种检查交给 eslint 就行,没必要配置**************/
    91. /**************额外的语法检查配置,这种检查交给 eslint 就行,没必要配置**************/
    92. /**************额外的语法检查配置,这种检查交给 eslint 就行,没必要配置**************/
    93. /* 有未使用到的本地变量时报错 */
    94. "noUnusedLocals": true,
    95. /* 有未使用到的函数参数时报错 */
    96. "noUnusedParameters": true,
    97. /* 每个分支都要有返回值 */
    98. "noImplicitReturns": true,
    99. /* 严格校验 switch-case 语法 */
    100. "noFallthroughCasesInSwitch": true,
    101. /**************模块解析配置**************/
    102. /**************模块解析配置**************/
    103. /**************模块解析配置**************/
    104. /* 指定模块的解析策略: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)*/
    105. /* 若未指定,那么在使用了 --module AMD | System | ES2015 时的默认值为 Classic,其它情况时则为 Node */
    106. "moduleResolution": "node",
    107. /* 在解析非绝对路径模块名的时候的基准路径 */
    108. "baseUrl": "./",
    109. /* 基于 'baseUrl' 的路径映射集合 */
    110. "paths": {},
    111. /* 将多个目录放在一个虚拟目录下,用于运行时 */
    112. /* 当自己编写的库和开发的代码都输出到一个目录下时,开发代码和库的位置不一样,开发代码引入库的路径就会不对 */
    113. "rootDirs": [],
    114. "rootDirs": ["src", "out"],
    115. /* 允许 export = xxx 导出 ,并使用 import xxx form "module-name" 导入*/
    116. "esModuleInterop": true,
    117. /* 当模块没有默认导出的时候,允许被别的模块默认导入,这个在代码执行的时候没有作用,只是在类型检查的时候生效 */
    118. "allowSyntheticDefaultImports": true,
    119. /* 不要 symlinks 解析的真正路径 */
    120. "preserveSymlinks": true,
    121. /* 允许在模块中以全局变量的方式访问 UMD 模块内容 */
    122. "allowUmdGlobalAccess": true,
    123. /************** Source Map 配置**************/
    124. /************** Source Map 配置**************/
    125. /************** Source Map 配置**************/
    126. /* 指定 ts 文件位置 */
    127. "sourceRoot": "",
    128. /* 指定 map 文件存放的位置 */
    129. "mapRoot": "",
    130. /* 生成目标文件的 sourceMap */
    131. "sourceMap": true,
    132. /* 将代码与sourcemaps生成到一个文件中,要求同时设置了--inlineSourceMap 或--sourceMap 属性*/
    133. "inlineSources": true,
    134. /* 生成目标文件的 inline sourceMap —— 源文件和 sourcemap 文件在同一文件中,而不是把 map 文件放在一个单独的文件里*/
    135. "inlineSourceMap": true,
    136. /* 生成声明文件的 sourceMap */
    137. "declarationMap": true,
    138. /************** 实验性的配置**************/
    139. /************** 实验性的配置**************/
    140. /************** 实验性的配置**************/
    141. /* 启用装饰器 */
    142. "experimentalDecorators": true,
    143. "emitDecoratorMetadata": true /* Enables experimental support for emitting type metadata for decorators. */,
    144. /**************高级配置**************/
    145. /**************高级配置**************/
    146. /**************高级配置**************/
    147. /* 强制区分大小写 */
    148. "forceConsistentCasingInFileNames": true
    149. },
    150. /* 指定需要编译的单个文件列表 */
    151. "files": [],
    152. /* 指定需要编译的文件/目录 */
    153. "include": [
    154. // // 只写一个目录名等价于 "./src/**/*"
    155. "src"
    156. ],
    157. /* 需要排除的文件或目录 */
    158. "exclude": [],
    159. /* 配置文件继承 */
    160. "extends": "./tsconfig.base.json"
    161. }