tsconfig.json配置

335 阅读6分钟

配置及释义

compileOnSave: 在保存文件时触发编译,默认为falseextends: 指定继承的配置文件路径。
files: 指定要包含在编译中的文件列表。
include: 指定要包含在编译中的文件或目录的匹配模式列表。
exclude: 指定要排除在编译中的文件或目录的匹配模式列表。
references: 指定引用的项目文件列表。
compileOptions: 编译选项。
   target: 指定要编译的目标JavaScript版本。默认为"es3"module: 指定模块代码生成的方式。常用值包括"commonjs""amd""es2015"等。
   lib: 指定在编译过程中需要包含的库文件。默认包含"dom""es5""scripthost"等。
   jsx: 指定使用的JSX解析器。常用值包括"preserve""react""react-native"等。
   declarationMap: 生成相应的声明文件的源映射文件。
   inlineSourceMap: 将源映射文件嵌入到输出文件中。
   inlineSources: 将源文件的内容嵌入到源映射文件中。
   outDir: 指定编译后的JavaScript文件输出的目录。
   outFile: 指定编译后的单个JavaScript文件的输出路径。
   rootDir: 指定用于编译的根文件夹。
   removeComments: 不生成编译后的JavaScript文件中的注释。
   noEmit: 不生成编译后的JavaScript文件。
   importHelpers: 为辅助函数生成导入语句,以减少代码的体积。
   downlevelIteration: 在ES5代码中使用迭代器时,编译成兼容的for循环
   strict: 启用所有严格类型检查选项。
   strictNullChecks: 当启用严格的null检查时,nullundefined只能被赋值给自身和void类型。
   strictFunctionTypes: 当启用严格函数类型检查时,函数参数必须具有完全匹配的类型。
   strictPropertyInitialization: 类的非undefined属性必须在构造函数中初始化。
   alwaysStrict: 在生成的JavaScript文件中,始终加入"use strict"指令。
   noUnusedLocals: 发出警告,当有未使用的局部变量。
   allowUnreachableCode: 允许存在不可达代码。
   forceConsistentCasingInFileNames: 要求在文件名中使用一致的大小写。
   rootDirs: 指定多个根文件夹的路径。
   typeRoots: 指定用于查找类型声明文件的目录。
   types: 指定需要包含的类型声明文件。
   allowSyntheticDefaultImports: 允许使用默认导入语法来导入没有默认导出的模块。
   esModuleInterop: 是否将导出的模块视作一个对象,而不是零散的属性,对象:import xx from xxx,零散:import xx as xxx from 'xx'
   preserveSymlinks: 保留符号链接的路径。
   skipLibCheck: 跳过对声明文件的类型检查。
   resolveJsonModule :启用对使用import读取json模块的支持。
   incremental: 在构建过程中生成增量编译信息,提高增量构建性能。
   tsBuildInfoFile: 指定用于增量构建的文件名。
   composite: 启用项目合成模式,用于更快的增量构建。
   strictBindCallApply: 对bind、call和apply方法的参数类型进行更严格的检查。
   noImplicitOverride: 当未覆盖重写父类方法时,发出警告。
   noPropertyAccessFromIndexSignature: 不允许通过索引签名访问对象属性。
   allowUnusedLabels: 允许未使用的标签。
   noUncheckedIndexedAccess: 对通过索引访问数组或元组时的类型检查更加严格。
   assumeChangesOnlyAffectDirectDependencies: 当启用时,指定只有直接依赖项发生更改时才进行增量构建。
   noImplicitAny: 在没有明确指定类型的情况下,禁止隐式使用any类型。
   noImplicitReturns: 当函数缺少显式的返回语句时发出警告。
   noFallthroughCasesInSwitch: 当switch语句中出现“fall through”现象时发出警告。
   noUnusedParameters: 发出警告,当有未使用的函数参数时。
   noImplicitThis: 当this具有隐式的any类型时发出警告。
   baseUrl: 设置项目的基本URL,用于解析非相对模块名。
   paths: 配置模块别名,用于简化模块引入的路径。
   sourceMap: 是否生成源映射文件,用于在浏览器中调试TypeScript源代码。
   declaration: 是否生成声明文件(.d.ts文件),用于提供给其他TypeScriptJavaScript项目进行类型检查。
   allowJs: 是否允许在TypeScript项目中导入和编译JavaScript文件。
   checkJs: 是否对导入的JavaScript文件进行类型检查。
   noEmitOnError: 在编译错误时阻止生成输出文件。
   noImplicitUseStrict: 不在生成的JavaScript文件开头插入"use strict"experimentalDecorators: 启用实验性的装饰器语法。
   noErrorTruncation: 在报告错误时显示完整的错误消息。
   preserveConstEnums: 保留数字枚举的常量值。
   isolatedModules: 将每个文件视为独立的模块,不进行全局模块合并处理。
   moduleResolution: 指定模块解析策略,可以是"node""classic""node12"charset: 指定输入文件的字符集。
   useDefineForClassFields:定义类字段使用#前缀来标识私有字段,并且类字段不再需要显式的初始化值,默认false

其中常用的配置及可选项

 compileOptions:
   <!-- 指定要编译的目标JavaScript版本。默认为"es3" -->
   target: "es3", "es5", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020", "es2021", "esnext"
   <!-- 指定模块代码生成的方式。 -->
   module: "commonjs", "amd", "es2015", "es2020", "none"
   <!-- 指定在编译过程中需要包含的库文件 -->
   lib: "es5", "es6", "es7", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020", "es2021", "dom", "webworker", "scripthost", "esnext", "esnext.bigint", "esnext.intl", "esnext.promise", "esnext.string", "esnext.symbol"
   <!-- 启用所有严格类型检查选项 -->
   strict: true, false
   <!-- 在没有明确指定类型的情况下,禁止隐式使用any类型 -->
   noImplicitAny: true, false
   <!-- 当启用严格的null检查时,nullundefined只能被赋值给自身和void类型 -->
   strictNullChecks: true, false
   <!-- 当启用严格函数类型检查时,函数参数必须具有完全匹配的类型 -->
   strictFunctionTypes: true, false
   <!-- 发出警告,当有未使用的局部变量 -->
   noUnusedLocals: true, false
   <!-- 发出警告,函数参数时 -->
   noUnusedParameters: true, false
   <!-- 当函数缺少显式的返回语句时发出警告 -->
   noImplicitReturns: true, false
   <!-- 启用对默认导出的模块的Interop支持 -->
   esModuleInterop: true, false
   <!-- 允许使用默认导入语法来导入没有默认导出的模块 -->
   allowSyntheticDefaultImports: true, false
   <!-- 是否生成源映射文件,用于在浏览器中调试TypeScript源代码 -->
   sourceMap: true, false
   <!-- 指定编译后的JavaScript文件输出的目录 -->
   outDir: 目录路径
   <!-- 是否生成声明文件(.d.ts文件),用于提供给其他TypeScriptJavaScript项目进行类型检查 -->
   declaration: true, false
   <!-- 不生成编译后的JavaScript文件 -->
   noEmit: true, false
   <!-- 启用项目合成模式,用于更快的增量构建 -->
   composite: true, false
   <!-- 不生成编译后的JavaScript文件中的注释 -->
   removeComments: true, false
   noLib: true, false
   <!-- 启用对使用import读取json模块的支持 -->
   resolveJsonModule: true, false
   <!-- 允许存在不可达代码 -->
   allowUnreachableCode: true, false
   <!-- 保留数字枚举的常量值 -->
   preserveConstEnums: true, false
   <!-- 设置项目的基本URL,用于解析非相对模块名 -->
   baseUrl: 目录路径
   <!-- 配置模块别名,用于简化模块引入的路径 -->
   paths: {"模块名": ["对应模块路径"]}
   <!-- 指定用于查找类型声明文件的目录 -->
   typeRoots: ["目录路径1", "目录路径2"]
   declarationDir: 目录路径

vue3项目配置

{
  "compilerOptions": {
    "target": "esnext",
    /** https://cn.vitejs.dev/guide/features.html#typescript-compiler-options */
    // 定义类字段使用#前缀来标识私有字段,并且类字段不再需要显式的初始化值,默认false
    "useDefineForClassFields": true,
    // 指定模块代码生成的方式
    "module": "esnext",
    // 控制在编译期间如何解析模块导入语句
    "moduleResolution": "node",
    /** TS 严格模式 */
    "strict": true,
    // 指定使用的JSX解析器
    "jsx": "preserve",
    // 为辅助函数生成导入语句,以减少代码的体积
    "importHelpers": true,
    // 启用实验性的装饰器语法
    "experimentalDecorators": true,
    // 允许使用默认导入语法来导入没有默认导出的模块
    "allowSyntheticDefaultImports": true,
    // 是否生成源映射文件,用于在浏览器中调试TypeScript源代码
    "sourceMap": true,
    // 启用对使用import读取json模块的支持
    "resolveJsonModule": true,
    /** https://cn.vitejs.dev/guide/features.html#typescript-compiler-options */
    // 将每个文件视为独立的模块,不进行全局模块合并处理
    "isolatedModules": true,
    // 是否将导出的模块视作一个对象,而不是零散的属性
    "esModuleInterop": true,
    // 指定在编译过程中需要包含的库文件
    "lib": ["esnext", "dom"],
    // 跳过对声明文件的类型检查
    "skipLibCheck": true,
    // 指定需要包含的类型声明文件
    "types": [
      "node",
      "vite/client",
      /** Element Plus 的 Volar 插件支持 */
      "element-plus/global",
      "vitest",
      "vitest/globals"
    ],
    /** baseUrl 用来告诉编译器到哪里去查找模块,使用非相对模块时必须配置此项 */
    "baseUrl": ".",
    /** 非相对模块导入的路径映射配置,根据 baseUrl 配置进行路径计算 */
    "paths": {
      "@/*": ["src/*"]
    }
  },
  // 指定要包含在编译中的文件或目录的匹配模式列表
  "include": [
    "src/**/*.ts",
    "src/**/*.d.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "tests/**/*.ts",
    "types/**/*.d.ts",
    "vite.config.ts",
    "vitest.config.ts"
  ],
  /** 编译器默认排除的编译文件 */
  "exclude": ["node_modules", "dist"]
}