除了常用配置之外,微软给出一个非常详细的配置参数说明英文版的 http://json.schemastore.org/tsconfig,如果打不开可以查看https://soulferry.xyz/project/ms-ts-config.json

基本属性说明

ts-config.json包含的属性files、include、exclude、extends、compilerOptions、compileOnSave、buildOptions、watchOptions、typeAcquisition、references、tsNodeModuleTypes、ts-node‘

参数类型默认值说明
filesstring[]用于表示由TS管理的文件具体文件路径,一般默认当前根目录下所有文件
excludestring[]用于表示不需要ts验证的文件,例如’src/pages/index.ts’
includestring[]表示需要ts验证的文件,例如‘src/**/*.ts’,表示src下 所有层级下的ts文件
compileOnSavebooleanfalse用于保存时是否自动生成ts编译后的文件
extendsstring用于配置文件之间是可以继承的,我们可以抽离基础部分方便复用。
compilerOptionsobject{}设置预编译规则,不设置则使用默认规则
typeAcquisitionobject
enable: booleanfalse是否开启自动引入库类型的定义文件(d.ts)
include: string[]允许自动引入定义文件的库名,例如[‘jquery’]
exclude: string[]需要排除引入的库名
buildOptionsoject构建配置
watchOptionsobjectwatchFile ​字符串类型,配置单个文件的监听策略,必须为一下几个值:
useFsEvents(默认):采纳零碎的文件系统的原生事件机制监听文件更改useFsEventsOnParentDirectory:采纳零碎的文件系统的原生事件机制监听批改文件所在的目录,这样批改一个文件实际上监听的是此文件所在的目录都被监听了,如此整个我的项目的文件监听器将显著缩小,但可能导致监听并不精确。
dynamicPriorityPolling:创立一个动静队列去监听文件,批改频率较低的文件将被缩小轮询监听的频率。
fixedPollingInterval:固定距离的查看每个文件是否发生变化。
priorityPollingInterval:固定距离的查看每个文件是否发生变化,但应用启发式监听的文件的查看频率要低于非启发式监听的文件。
watchDirectory ​字符串类型,配置监听目录的策略,必须为以下几个值:useFsEvents(默认)dynamicPriorityPollingfixedPollingInterval ​以上三个和 watchFile 中相差不多fallbackPolling ​当采纳零碎的文件系统中原生事件机制监听文件时,此选项指定本机的文件监听器被耗尽或者不反对本机文件监听器是编译器采纳的轮询策略,能够设置为以下几个值:fixedPollingIntervaldynamicPriorityPollingpriorityPollingIntervalsynchronousWatchDirectory:禁用对目录的提早监听。如果有大量的文件更改,比方在 npm install 时 node_modules 目录产生的变动,提早监听是十分有用的。但总有些不常见的场景须要禁用提早监听。 ​synchronousWatchDirectory
布尔类型,是否对目录提早监听。如果配置为 true ,当文件产生批改时同步的调用回调并更新目录监听器。excludeFiles ​字符串数组,用于指定不须要被监听变动的文件excludeDirectories ​字符串数组,用于指定不须要被监听变动的目录
referencesobject[]子项目中依赖的其它子项目;”references”: [{ “path”: “./tsconfig.node.json” }]
ts-nodeobject“ts-node 选项。另见:https://typestrong.org/ts-node/docs/configurationts-node 为 node.js 提供 TypeScript 执行和 REPL,并支持源映射。”

如果不设置files和include,typescript默认是exclude以外所有的.ts 和 .tsx文件,如果设置了files 和 include则files的优先级最高,exclude第二,include优先级最低

预编译配置compilerOptions

参数类型默认值说明
allowJsbooleanfalse编译时,允许对JS文件进行检查编译
allowSyntheticDefaultImportsbooleanfalse允许使用 import * 引入 未导出的模块
allowUnreachableCodebooleanfalse允许存在执行不到的代码,例如return 后边的代码
allowUnusedLabelsbooleanfalse允许未使用的标签,默认会提示错误
alwaysStrictboolean false严格模式,为每一个文件添加 use strict,默认不添加
baseUrlstring与 path 一同定义模块查找的路径,项目根路径地址例如 ‘./’ 或者 ‘.’
charsetstringutf-8文件的编码类型
checkJsbooleanfalse与allowJs协同使用
declarationbooleanfalse编译时自动生成d.ts,定义文件
declarationDirstring生成定义文件存放地址
diagnosticsbooleanfalse是否显示诊断信息
downLevelIterationbooleanfalse当es版本为es5或者 es3时,提供es6的支持,例如 forof,解构赋值等
emitBOMbooleanfalse在输出的文件头添加utf-8的标记
emitDecoratorMetadatabooleanfalse是否支持处于实验版本的功能,详情参考 issue
forceConsistentCasingInFileNamebooleanfalse不允许不同变量表示同一个文件
importHelpersbooleanfalse引入帮助
inlineSourceMapbooleanfalse将sourcemap文件一同生成输出到文件中
inlineSourcesbooleanfalse将ts源码生成到sourcemap中,需要同时设置sourceMap或者inlineSourceMap
isolateModulesbooleanfalse将每一个文件作为单独的模块
jsxstring‘preserve’jsx的编译方式【preserve,react,react-native】该preserve模式将保留 JSX 作为输出的一部分,
以供另一个转换步骤(例如 Babel)进一步使用。此外,输出将具有 .jsx 文件扩展名。
该react模式将发出 React.createElement,使用前不需要经过 JSX 转换,并且输出将具有 .js 文件扩展名。
该react-native模式等效于保留,因为它保留所有 JSX,但输出将改为具有 .js 文件扩展名。
jsxFactorystringReact.createElement自定义jsx渲染方法,例如自定义createElement或者自定义h
libstring[]引入库定义文件,可以是[“es5”, “es6”, “es2015”, “es7”, “es2016”, “es2017”, “esnext”, “dom”, “dom.iterable”, “webworker”, 
“scripthost”, “es2015.core”, “es2015.collection”, “es2015.generator”, “es2015.iterable”, “es2015.promise”, “es2015.proxy”, 
“es2015.reflect”, “es2015.symbol”, “es2015.symbol.wellknown”, “es2016.array.include”, “es2017.object”,
 “es2017.sharedmemory”, “esnext.asynciterable”](2.0 以上)
listEmittedFilesbooleanfalse显示输入文件名称
listFilesbooleanfalse显示编译输出的文件名称
localestring跟随系统错误信息的语言
mapRootstring 定义sourcemap的存放地址
maxNodeModuleJsDeathnumber0检查js文件的引入深度,需要协同allowJs一起使用
modulestring指定模块生成方式,[“commonjs”, “amd”, “umd”, “system”, “es6”, “es2015”, “esnext”, “none”]
moduleResolutionstring指定模块解析方式【classic,node】
newLinestring随系统行位换行符 
noEmitbooleanfalse不显示输出
noEmitHelpersbooleanfalse不在输出文件中生成帮助信息
noEmitOnErrorbooleanfalse编译出错后,不输出文件
noFallthroughCasesInSwitchbooleanfalse为 switch 语句中的失败案例启用错误报告,
noImplicitAnybooleanfalse不允许使用隐式调用,如果true,函数的形参必须带类型,如果叫不出class名的js对象,那就得any,比如(d:any)=>{}如果false,函数的样子更像js  (d)=>{}
noImplicitReturnsbooleanfalse不允许返回空函数,设为true会检查函数是否有返回值
noImplicitThisbooleanfalse不允许给 this定义any类型
noImplicitUseStrictbooleanfalse输出文件中不添加 use strict
noLibbooleanfalse不引入默认库文件
noResolvebooleanfalse不编译 /// 或者 模块引入的文件noUnusedLocals
noUnusedLocalsbooleanfalse未使用的本地变量将报错(2.0 以上)
noUnusedParametersbooleanfalse声明但是未使用的变量 提示错误
outDirstring定义输出文件的文件夹地址
outFilestring合并输出到指定文件夹
pathsobject定义快捷访问prefix,与 baseUrl 一同定义模块查找的路径,”paths”: {“@/*”: [“src/*”]}
preserveConstEnumsbooleanfalse禁用擦除生成代码中的 `const enum` 声明。
prettybooleanfalse提示代码美化错误信息
removeCommentsbooleanfalse编译时移除console打印信息
rootDirstring定义输入文件的根目录
rootDirsstring[]定义多个文件输入口
skipLibCheckbooleanfasle对库文件的定义跳过类型检查
sourceMapbooleanfalse是否生成map文件
sourceRootstringsourcemap文件的存放地址
strictbooleanfalse同时开启 alwaysStrict, noImplicitAny, noImplicitThis 和 strictNullChecks (2.3 以上)
strictNullChecksbooleanfaslenull检查,不允许使用null
stripInternalbooleanfalse不输出jsdoc的注释
suppressExcessPropertyErrorsbooleanfalse不提示对象外属性错误信息
suppressImplicitAnyIndexErrorsbooleanfalse不提示对象索引隐式any的错误信息
targetstringes3输出代码 ES 版本,可以是 [“es3”, “es5”, “es2015”, “es2016”, “es2017”, “esnext”]
traceResolutionbooleanfalse=跟踪模块查找信息
typeRootsstring[]静态描述文件的文件夹位置
typesstring[]设置引入的静态描述文件
watchbooleanfalse监听文件的变更

一般情况下,tsconfig.json 文件只需配置 compilerOptions 部分。

{
  "compilerOptions": {
    "target": "esnext",
    "useDefineForClassFields": true,
    "module": "esnext",
    "moduleResolution": "node",
    "strict": true,
    "jsx": "preserve",
    "sourceMap": true,
    "resolveJsonModule": true,
    "isolatedModules": false,
    "esModuleInterop": true,
    "lib": ["esnext", "dom"],
    "skipLibCheck": true,
    "baseUrl": ".",
    "types": ["vite/client", "node"],
    "typeRoots": ["./node_modules/@types/", "./types"],
    "paths": {
      "@/*": ["src/*"],
      "@views/*": ["src/views/*"],
    }
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.d.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "build/**/*.ts",
    "build/**/*.d.ts",
    "types/**/*.d.ts",
    "types/**/*.ts",
    "mock/**/*.ts",
    "vite.config.ts",
    "components.d.ts"
  ],
  "exclude": ["node_modules", "dist", "**/*.js"]
}


发表回复

您的电子邮箱地址不会被公开。