文章目录

  • 前言
  • 核心配置
    • 基本选项
    • 严格类型检查选项
    • 模块解析选项
    • Source Map 选项
    • 实验性选项
    • 其他选项
    • 文件包含/排除选项
  • 详细用法示例
  • 最佳实践建议


在这里插入图片描述

前言

tsconfig.json 是 TypeScript 项目的配置文件,用于指定编译选项和文件包含规则。以下是所有主要配置参数的中文详解:


核心配置

compilerOptions (编译器选项)

基本选项

  • target: 指定编译后的 JavaScript 目标版本 (如"esnext", “es5”, “es6”, “es2015”, “es2020” 等)
  • module: 指定模块系统 (如 “commonjs”, “amd”, “es2015”, “esnext” 等)
  • lib: 指定要包含的库文件声明 (如 [ “esnext”, “es5”, “es6”, “dom”])
  • allowJs: 允许编译 JavaScript 文件 (true/false)
  • checkJs: 在 JavaScript 文件中报告错误 (true/false)
  • jsx: 指定 JSX 代码生成方式 (“preserve”, “react”, “react-jsx”, “react-jsxdev” 等)
  • declaration: 生成对应的 .d.ts 声明文件 (true/false)
  • declarationMap: 为声明文件生成 sourcemap (true/false)
  • sourceMap: 生成对应的 .map 文件 (true/false)
  • outFile: 将所有输出合并为一个文件 (仅适用于 module 为 “amd” 或 “system”)
  • outDir: 指定输出目录
  • rootDir: 指定输入文件的根目录
  • composite: 启用项目编译 (true/false)
  • incremental: 启用增量编译 (true/false)
  • tsBuildInfoFile: 指定增量编译信息文件的路径

严格类型检查选项

  • strict: 启用所有严格类型检查选项 (true/false)
  • noImplicitAny: 禁止隐式 any 类型 (true/false)
  • strictNullChecks: 启用严格的 null 检查 (true/false)
  • strictFunctionTypes: 启用严格的函数类型检查 (true/false)
  • strictBindCallApply: 对 bind, call, apply 方法进行严格检查 (true/false)
  • strictPropertyInitialization: 确保类的属性已初始化 (true/false)
  • noImplicitThis: 禁止隐式 any 类型的 this (true/false)
  • alwaysStrict: 以严格模式解析并为每个源文件生成 “use strict” (true/false)

模块解析选项

  • moduleResolution: 指定模块解析策略 (“node” 或 “classic”)
  • baseUrl: 解析非相对模块名的基准目录
  • paths: 设置模块名到基于 baseUrl 的路径映射
  • rootDirs: 将多个目录合并为一个虚拟目录
  • typeRoots: 指定类型定义文件的目录列表
  • types: 指定要包含的类型声明文件包
  • allowUmdGlobalAccess: 允许从模块访问 UMD 全局变量 (true/false)
  • resolveJsonModule: 允许导入 JSON 模块 (true/false)
  • preserveSymlinks: 不解析符号链接的真实路径 (true/false)

Source Map 选项

  • sourceRoot: 指定调试器应该定位的 TypeScript 文件位置
  • mapRoot: 指定调试器应该定位的 map 文件位置
  • inlineSourceMap: 将 sourcemap 嵌入到生成的 JS 文件中 (true/false)
  • inlineSources: 将源代码与 sourcemaps 一起嵌入到单个文件中 (true/false)

实验性选项

  • experimentalDecorators: 启用实验性装饰器支持 (true/false)
  • emitDecoratorMetadata: 为装饰器提供元数据支持 (true/false)

其他选项

  • importHelpers: 从 tslib 导入辅助工具函数 (true/false)
  • downlevelIteration: 为迭代器提供更准确的降级支持 (true/false)
  • isolatedModules: 确保每个文件都可以安全地独立编译 (true/false)
  • allowSyntheticDefaultImports: 允许从没有默认导出的模块进行默认导入 (true/false)
  • esModuleInterop: 启用更兼容的 CommonJS/AMD/UMD 模块导入导出 (true/false)
  • forceConsistentCasingInFileNames: 强制文件名大小写一致 (true/false)
  • skipLibCheck: 跳过声明文件的类型检查 (true/false)
  • noEmit: 不生成输出文件 (true/false)
  • noEmitOnError: 当有错误时不生成输出文件 (true/false)
  • noEmitHelpers: 不生成辅助函数,需手动引入 (true/false)
  • noImplicitReturns: 函数中所有代码路径必须返回值 (true/false)
  • noFallthroughCasesInSwitch: 防止 switch 语句贯穿 (true/false)
  • noUnusedLocals: 报告未使用的局部变量 (true/false)
  • noUnusedParameters: 报告未使用的函数参数 (true/false)\
  • noUncheckedIndexedAccess: 在索引访问中包含 undefined (true/false)
  • noPropertyAccessFromIndexSignature: 禁止通过点符号访问索引签名属性 (true/false)
  • removeComments: 移除注释 (true/false)
  • preserveConstEnums: 保留 const enum 声明 (true/false)
  • newLine: 指定换行符 (“crlf” 或 “lf”)
  • useDefineForClassFields: 使用现代类字段定义方式 (true/false)
  • keyofStringsOnly: 使 keyof 仅返回字符串 (true/false)
  • suppressExcessPropertyErrors: 禁止额外属性检查 (true/false)
  • suppressImplicitAnyIndexErrors: 禁止隐式索引错误 (true/false)
  • noErrorTruncation: 不截短错误消息 (true/false)
  • charset: 已弃用,指定输入文件的字符集
  • emitBOM: 在输出文件开头写入 BOM (true/false)
  • locale: 指定错误消息的语言环境 (如 “en-us”, “zh-cn”)
  • disableSizeLimit: 禁用 JavaScript 项目大小限制 (true/false)
  • listFiles: 打印编译的文件名 (true/false)
  • listEmittedFiles: 打印输出的文件名 (true/false)
  • traceResolution: 打印模块解析日志 (true/false)
  • diagnostics: 打印诊断信息 (true/false)
  • extendedDiagnostics: 打印扩展诊断信息 (true/false)
  • generateCpuProfile: 生成 CPU 分析文
  • plugins: 指定要运行的编译器插件列表

文件包含/排除选项

  • files: 指定要包含的文件列表
  • include: 指定要包含的文件模式
  • exclude: 指定要排除的文件模式
  • extends: 继承另一个 tsconfig.json 文件的配置
  • references: 项目引用配置
  • compileOnSave: 指示 IDE 在保存时编译 (true/false)
  • typeAcquisition: 指定自动类型获取的选项

详细用法示例

{"compilerOptions": {"target": "es6","module": "commonjs","strict": true,"esModuleInterop": true,"skipLibCheck": true,"forceConsistentCasingInFileNames": true,"outDir": "./dist","rootDir": "./src","baseUrl": "./","paths": {"@utils/*": ["src/utils/*"]}},"include": ["src/**/*"],"exclude": ["node_modules", "**/*.spec.ts"]
}

最佳实践建议

  • 对于新项目,建议启用 strict: true 以获得最严格的类型检查
  • 使用 includeexclude 替代 files 来管理文件包含
  • 对于大型项目,考虑使用项目引用 (references) 来拆分代码库
  • 使用 extends 继承共享配置,避免重复配置
  • 对于 Node.js 项目,target 设为 es2018 或更高版本可以获得更好的性能
  • 启用 esModuleInterop 可以简化 CommonJS 模块的导入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916244.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916244.shtml
英文地址,请注明出处:http://en.pswp.cn/news/916244.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java经典笔试题

1.计算机网络传输层有哪些协议?分别适用于什么场景? TCP:面向连接、可靠传输(重传机制),适用于对数据完整性要求高的场景,如文件传输 (FTP)、HTTP 通信、邮件发送&…

如何序列化和反序列化动态 XmlElement ?

有如下XML&#xff0c;Index_0-Index_N为动态的&#xff0c;N为可变数&#xff0c;如何将对象NoneXML序列化为XML&#xff0c;以及如何将XML内容反序列化为对象NoneXML&#xff1f;1、XML内容<NoneXML><Index_0><UseInSummary>0</UseInSummary><Beg…

分布式高可用ELK平台搭建及使用保姆级教程指南 (附安装包网盘免费下载)

1 ELK 简介 1.1 ELK 是什么 ​ ELK是一套开源免费且功能强大的日志分析管理系统,由 Elasticsearch、Logstash、Kibana 三部分组成,是三个软件产品的首字母缩写,简称ELK。这三款软件都是开源软件,通常是配合使用,且归于 Elastic.co 公司名下,所以被简称为 ELK。 ​ ELK…

MySQL索引背后的B+树奥秘

MySQL 索引实现机制深度解析 MySQL 索引的核心数据结构是 B树。这种设计是数据库领域数十年优化的结果&#xff0c;完美平衡了磁盘 I/O 效率、范围查询性能和存储利用率。以下是关键要点&#xff1a;一、为什么选择 B树而非其他结构&#xff1f;数据结构劣势B树优势二叉搜索树深…

k8s通过NUMA亲和分配GPU和VF接口

问题 一般情况下&#xff0c;sriov插件和gpu分配插件是单独工作的&#xff0c;网卡和GPU没有根据连接关系分配 如果一个节点起了多个容器&#xff0c;会造成GPU和网卡的通信瓶颈 修改 如果一个点起两个容器&#xff0c;可以按照NUMA亲和来分配 修改kubelet配置文件/var/lib/kub…

qemu-img 扩容虚拟机磁盘后扩容文件系统

在给磁盘映像扩容前需要关闭虚拟机1. 关闭虚拟机 [rootkvm1 opt]# virsh shutdown centos7.9 [rootkvm1 opt]# virsh list --allId Name State ----------------------------- centos7.9 shut off[rootkvm1 opt]# qemu-img info /var/lib/libvirt/images/centos…

Winwos上编译opencv的GPU版本推理yolov8

1.工具 VS2019 opencv4.7.0 opencv_contrib4.7.0 Cmake3.27.0 cudnn-windows-x86_64-8.5.0.96_cuda11-archive 2.具体流程 1.配置路径和编译器后点击configure 2.提前下载相关的包&#xff0c;如下图所示 3.第一次configure完成后&#xff0c;需要再配置编译选项 在编译…

C语言案例《猜拳游戏》

《猜拳游戏》 游戏说明 一、游戏简介 本游戏为猜拳对战类游戏&#xff0c;玩家可选择不同对手进行石头、剪刀、布的猜拳对决&#xff0c;支持重复游玩&#xff0c;直至玩家选择退出。 二、游戏流程 选择对手 游戏开始后&#xff0c;玩家需从 3 名对手中选择 1 名进行对战&#…

使用python的头文件Matplotlib时plt.show()【标题字体过小】问题根源与解决方案

使用python的头文件Matplotlib时plt.show【标题字体过小】问题根源与解决方案1. 问题复现2. 问题分析3. 解决方案方案一&#xff08;推荐&#xff09;&#xff1a;使用 fig.suptitle 结合 subplots_adjust方案二&#xff1a;以保存文件函数plt.savefig为准方案三&#xff1a;不…

全面解析MySQL(3)——CRUD进阶与数据库约束:构建健壮数据系统的基石

> 本文将带你深入探索MySQL的进阶CRUD操作与核心约束机制,用设计原则的视角揭示数据库如何保障数据世界的秩序。 ### 一、进阶CRUD:数据操作的精密工具 #### 1. 精准筛选:WHERE子句的深度运用 ```sql -- 基础筛选:价格大于50的菜品 SELECT * FROM dishes WHERE pric…

使用Redis实现MySQL的数据缓存

使用Redis来实现/mySQL的数据缓存的架构1&#xff1a;目标数据从mySQL读取数据或者从Redis读取数据 2&#xff1a;使用cannal监控mySQL&#xff1a;canal-server可以对mysql的blog实行拉取&#xff0c;可以拉去blog里面的(增&#xff0c;删&#xff0c;改等操作&#xff0c;查询…

linux配置ntp时间同步

目录 1.设置时区 2.安装chrony时间同步工具 3.修改chrony配置文件,添加阿里云NTP服务器作为时钟源 4.重启chrony服务&#xff0c;并查看同步结果 1.设置时区 timedatectl set-timezone Asia/Shanghai 2.安装chrony时间同步工具 apt install chrony -y&#xff08;dnf ins…

powershell 实现批量把文件夹下的bmp文件转换为jpg

以下是一个使用PowerShell将BMP图像批量转换为JPG&#xff08;质量85&#xff09;的脚本&#xff1a; <# .SYNOPSIS批量将BMP图像转换为JPG格式&#xff08;质量85&#xff09; .DESCRIPTION此脚本会遍历指定文件夹中的所有BMP文件&#xff0c;并将它们转换为JPG格式&#x…

星图云开发者平台新功能速递 | 页面编辑器:全场景编辑器,提供系统全面的解决方案

在数字化转型的浪潮下&#xff0c;高效的低代码开发工具成为企业和开发者的刚需&#xff0c;其需要针对Web、APP、H5等不同终端快速构建应用。但不同场景的开发往往需要不同的工具和技术栈&#xff0c;导致开发效率低、协作成本高。星图云开发者平台创新推出多类型页面专用编辑…

激活函数Focal Loss 详解​

Focal Loss 详解​1. 背景​Focal Loss 是由 Lin et al. (2017) 在论文 《Focal Loss for Dense Object Detection》 中提出的一种损失函数&#xff0c;主要用于解决 目标检测&#xff08;Object Detection&#xff09; 中的 类别不平衡问题&#xff0c;特别是在 One-Stage 检测…

Python 链接各种中间件[Mysql\redis\mssql\tdengine]

文章目录链接参数设置logger 日志redis 链接mysql 链接emqx 链接mssql 链接tdengine 链接采集OPCUA的点表的配置信息设备点表OPCUA 采集 数据程序数据采集逻辑链接参数 import randomtdengine_connection_params {username: root,password: taosdata,host: 127.0.0.1,port: 6…

C Primer Plus 第6版 编程练习——第11章(上)

本章共16题&#xff0c;分上中下三篇1.设计并测试一个函数&#xff0c;从输入中获取n个字符&#xff08;包括空白、制表符、换行符)&#xff0c;把结果存储在一个数组里&#xff0c;它的地址被传递作为一个参数。int get_n_char(char arr[], int n) {int i 0;char ch;while (i…

Java开发岗面试记录合集

一、Java 核心1. 基础语法final关键字的作用修饰类&#xff1a;类不可被继承&#xff08;如String类&#xff09;&#xff0c;保证类的稳定性和安全性。修饰方法&#xff1a;方法不可被重写&#xff08;防止子类篡改父类核心逻辑&#xff0c;如工具类方法&#xff09;。修饰变量…

Linux 系统时间设置(date 和 ntpdate)-linux028

date 命令&#xff1a;查看或设置系统时间1. 查看当前时间date示例输出&#xff1a;Tue Mar 4 01:36:45 CST 20142. 设置时间&#xff08;不设置日期&#xff09;date -s 09:38:40设置后输出&#xff1a;Tue Mar 4 09:38:40 CST 20143. 设置完整日期和时间&#xff08;推荐格…

iOS上使用WebRTC推拉流的案例

一、库集成 首先&#xff0c;确保在你的 Podfile 中添加依赖&#xff1a; pod GoogleWebRTC然后执行 pod install 安装库。 二、代码示例 2.1、权限配置&#xff1a;在 Info.plist 中添加摄像头、麦克风权限 <!-- 需要在 Info.plist 中添加以下权限 --> <key>NSCam…