相关推荐recommended
tsconfig.json配置详解
作者:mmseoamin日期:2023-11-30
1、tsconfig.json是TypeScript编辑器的配置文件,通常存在于项目的根目录中,TypeScript编译器可根据它的信息来对代码进行编译。根选项:
  • include:用来指定哪些ts文件需要被编译,否则默认当前目录下除了exclude之外所有.ts, .d.ts,.tsx文件

    • exclude:指定不需要被编译的目录

      • extends:指定一个其他tsconfig.json文件路径,来继承这个配置文件里的配置,继承文件的配置会覆盖当前文件定义的配置

        • files:指定被编译文件的列表,只有需要编译文件少时才会用到,一般直接用include指定文件夹

          • compilerOptions: 编译器选项

            2、具体配置记录如下
            {
              "compilerOptions": {
                "target": "esnext", // 指定编译后的ECMAScript版本
                "module": "esnext", // 指定要使用的模板标准
                "jsx": "preserve", // 指定jsx代码用于的开发环境
                "allowJs": true, // 允许编译JS
                "sourceMap": true, // 用来指定编译时是否生成.map文件
                "strict": true, // 严格模式
                "moduleResolution": "node",//用于选择模块解析策略,有'node'和'classic'两种类型
                "forceConsistentCasingInFileNames": false, //是否强制代码中使用的模块文件名必须和文件系统中的文件名保持大小写一致
                "allowSyntheticDefaultImports": true, //指定允许从没有默认导出的模块中默认导入
                "strictFunctionTypes": false, //用来指定是否使用函数参数双向协变检查
                "esModuleInterop": true, //为导入内容创建命名空间,实现CommonJS和ES模块之间的互操作性
                "resolveJsonModule": true, //包含导入的模块.json的扩展。
                "noUnusedLocals": false, // 用于检查是否有定义了但是没有使用变量
                "noUnusedParameters": true, // 用于检测是否在函数中没有使用的参数
                "useDefineForClassFields": true, //将 class 声明中的字段语义从 [[Set]] 变更到 [[Define]]
                "experimentalDecorators": true, // 用于指定是否启用实验性的装饰器特性
                "noImplicitAny": false, // 不允许变量或函数参数具有隐式any类型
                "skipLibCheck": true, // 用来控制是否在编译时进行库文件检查的
                // 指定要包含在编译中的库文件,如未指定会根据target注入默认列表
                "lib": [
                  "esnext",
                  "dom",
                  "dom.Iterable"
                ],
                // 用来指定需要包含的模块,只有在这里列出的模块声明文件才会被加载进来
                "types": [],
                // 用于设置解析非相对模块名称的基本目录,相对模块不会受到baseUrl的影响
                "baseUrl": ".",
                // 用于设置模块名到基于baseUrl的路径映射
                "paths": {
                  "@/*": [
                    "src/*"
                  ]
                }
              },
              // 指定需要编译文件,否则默认当前目录下除了exclude之外的所有.ts, .d.ts,.tsx文件
              "include": [
                "src/**/*.ts",
              ],
              // 不编译某些文件
              "exclude": [
                "node_modules",
              ]
            }