TypeScript的常用配置详解

TypeScript 配置文件(tsconfig.json)是 TypeScript 项目的核心控制文件,tsconfig.json的作用是告诉TypeScript编译器如何编译项目中的TypeScript文件。它可以定义编译规则(如目标版本、模块类型等)和文件范围(包含/排除的文件路径)‌,以下是其关键配置项的详细解析:

1.创建 TypeScript 的配置文件 tsconfig.json 

1:通过命令行生成(推荐) 

npm install -g typescript  # 全局安装
# 或
npm install typescript --save-dev  # 本地安装
//在项目根目录运行初始化命令
tsc --init

此时会在当前目录自动生成 tsconfig.json 文件,包含默认配置 

2:手动创建

  1. 在项目根目录新建文件
    手动创建文件并命名为 tsconfig.json

  2. 填写基础配置

{
  "compilerOptions": {
    // 基础配置示例
    "target": "ES6",
    "module": "CommonJS",
    "strict": true,
    "outDir": "dist"
  },
  "include": ["src/**/*.ts"]
}

验证配置文件是否生效

  1. 运行编译命令‌:

    tsc # 编译所有 TypeScript 文件
  2. 检查输出
    编译后的文件会出现在 outDir 指定的目录(如 dist/)。

2. 文件结构

tsconfig.json 的基本结构如下:

{
  "compilerOptions": {
    /* 配置选项 */
  },
  "vueCompilerOptions":{
    /* Vue 特定配置)*/
   },
    "watchOptions": {
     /* :仅在 TypeScript 持续编译模式(tsc --watch)中生效,配置文件监视的行为。*/

     },//监控选项
    "typeAcquisition":{
      /* 类型获取 */

      }
 
  "include": ["**/*.ts"],// 显式包含需要编译的文件或目录包括业务文件和类型声明文件(支持通配符 **)

  "exclude": ["node_modules"], // 排除不需要编译的文件(通常配合 include 使用)
  "files": ["file1.ts", "file2.ts"]  //显式列出需要编译的文件(不推荐,除非项目很小),优先级比include高,
   "extends":{
      /* 继承其他配置文件*/
      },
     "references":{
      /* 项目间引用配置*/
     }
}

1. 核心配置项 (compilerOptions)

基础配置
选项描述可选值默认值示例值
target

指定编译后的 JavaScript 版本 ECMAScript 

(ES3/ES5/ES2015/ES2016/ES2020/ESNext)

ESNext 表示会使用最新的 ECMAScript 标准特性

"ES3""ES2015"
module指定编译后的模块类型(commonjses2015esnextumdsystem等)"commonjs""ES2015"
outDir生成编译后文件的目录"./""dist"
rootDir指定源码根目录(需与 outDir 配合,避免输出目录混乱)"src""src"

类型检查 

strict启用所有严格类型检查(等价于 strictNullChecks + strictFunctionTypes 等)falsetrue
strictNullChecks禁用 null 和 undefined 的隐式分配falsetrue
noImplicitAny禁止隐式 any 类型falsetrue
noImplicitReturns要求所有函数路径都有返回值falsetrue
noUnusedLocals报告未使用的局部变量falsetrue
noUnusedParameters报告未使用的参数falsetrue
模块和模块解析
选项描述默认值示例值
moduleResolution模块解析策略 (node 或 nodenext),

设置为 Node 表示会按照 Node.js 的模块解析策略来查找和加载模块。这意味着它会先在当前目录下查找 node_modules 文件夹中的模块,然后按照一定层级向上查找,类似于 Node.js 运行环境中 require 函数查找模块的方式(但这里针对的是使用 import 等模块语法的情况)

"node""nodenext"(用于 ESM)
baseUrl模块解析的基路径,用于相对模块路径 (配合 paths)"./""src"
paths配置路径别名(需要配合 baseUrl{}"@/*": ["src/*"]
esModuleInterop允许导入 CommonJS 模块作为 ES6 模块falsetrue(推荐)
allowSyntheticDefaultImports允许从 CommonJS 模块默认导入 (import React from 'react')falsetrue

 输出控制

选项描述默认值示例值
declaration生成 .d.ts 类型定义文件falsetrue
sourceMap生成 source map 文件falsetrue
removeComments移除 TypeScript 代码中的注释falsetrue
moduleSuffix指定模块后缀,如 .js 或 .mjs.js.mjs

 JSX 相关

选项描述可选值默认值示例值
jsx指定 JSX 的编译模式(reactpreservereact-jsx 等)"preserve" 保留 JSX 以供其他工具处理,"react" 编译为 React.createElement 调用,"react-jsx" 和 "react-jsxdev" 针对 React 17 及以后"react""react-jsx"
jsxFactory指定 JSX 的 factory 函数 (如 h 或 jsx)"React.createElement""h"
jsxFragmentFactory指定 JSX Fragment 的 factory 函数"React.Fragment""Fragment"

 其他

选项描述默认值示例值
lib指定要包含的库文件(如 DOMES2015根据 target 自动推断["ES2020", "DOM"]
incremental启用增量编译,加快后续编译速度falsetrue
downlevelIteration在 target 低于 ES6 时,启用迭代器 (for...of)falsetrue

 2.watchOptions

仅在 TypeScript 持续编译模式tsc --watch)中生效,配置文件监视的行为 

子选项描述默认值示例值
poll使用轮询方式监视文件变化(替代系统事件监听),适用于旧系统或不可靠的文件系统false 或 "deprecated"1000(每秒轮询一次)
fallbackPolling在默认 poll 不可用时的轮询频率(如某些文件系统)500 ms2000
ignoreWatch忽略监视文件夹(必须是绝对路径或相对于 rootDir 的路径)[]["/path/to/folder"]
drop忽略文件系统事件,仅触发重新编译(适合移动/重命名文件后需强制重新扫描)falsetrue
excludeDirectories排除某些目录的监视(相对路径或绝对路径)[]["node_modules", "di

3. typeAcquisition:类型自动获取配置

控制 TypeScript 是否自动下载或发现项目中使用的第三方库的类型定义(如 @types/node)。

子选项描述默认值示例值
enable是否启用自动下载类型定义truefalse(禁用自动下载)
include指定需要自动安装的包名称(例如 "lodash""react"[]["axios", "express"]
exclude排除不需要自动安装的包名称[]["marked"]

4. references: 项目引用配置(Project References)

用于大型项目拆分,通过项目间引用实现 增量编译,提高编译速度。

用于引用其他的 tsconfig.json 文件,这里表示当前的 tsconfig.json 文件会引用配置目录下的的 tsconfig.app.json 和 tsconfig.node.json 这两个配置文件

子选项描述默认值示例值
enable是否启用自动下载类型定义truefalse(禁用自动下载)
include指定需要自动安装的包名称(例如 "lodash""react"[]["axios", "express"]
exclude排除不需要自动安装的包名称[]["marked"]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值