tsconfig.json 内容解读

tsconfig.json 文件是 TypeScript 项目的主要配置文件,用于指定编译选项和项目设置。通过这个文件,你可以控制编译器的行为,例如输出文件的路径、模块解析方式、严格类型检查等。

以下是一些常见的 tsconfig.json 属性及其详细解释:

顶层属性

1、compilerOptions
  • 包含编译器选项,用于控制编译过程。
{"compilerOptions": {"target": "es6","module": "commonjs","outDir": "./dist","strict": true}
}
2、include
  • 指定要包含在编译中的文件或文件夹。
  • 支持通配符(如 * 和 **)。
{"include": ["src/**/*"]
}
3、exclude
  • 指定要排除在编译之外的文件或文件夹。
  • 支持通配符(如 * 和 **)。
{"exclude": ["node_modules", "dist"]
}
4、files
  • 显式列出要包含在编译中的文件。
  • 不支持通配符。
{"files": ["src/index.ts", "src/utils.ts"]
}
5、references
  • 用于项目引用,支持多项目构建。
{"references": [{ "path": "./src" },{ "path": "./test" }]
}
6、extends
  • 继承另一个 tsconfig.json 文件的配置。
{"extends": "../tsconfig.base.json"
}

compilerOptions 属性

1、target
  • 指定编译后的 JavaScript 版本。
  • 常见值:es3es5es6(或 es2015),es2017es2018es2019es2020es2021esnext
"target": "es6"
2、module
  • 指定模块代码生成的方式。
  • 常见值:nonecommonjsamdsystemumdes6(或 es2015),es2020esnext
"module": "commonjs"
3、outDir
  • 指定编译输出文件的目录。
"outDir": "./dist"
4、rootDir
  • 指定源代码的根目录。
  • 编译器会根据这个目录来确定输出文件的相对路径。
"rootDir": "./src"
5、strict
  • 启用所有严格的类型检查选项。
  • 包括 noImplicitAnynoImplicitThisalwaysStrictstrictBindCallApplystrictFunctionTypesstrictNullChecksstrictPropertyInitialization
"strict": true
6、esModuleInterop
  • 启用 CommonJS 和 ES 模块之间的互操作性。
"esModuleInterop": true
7、skipLibCheck
  • 跳过对库文件的类型检查,可以加快编译速度。
"skipLibCheck": true
8、forceConsistentCasingInFileNames
  • 确保文件名在导入时保持一致的大小写。
"forceConsistentCasingInFileNames": true

9、resolveJsonModule:

  • 允许导入 JSON 模块。
"resolveJsonModule": true
10、allowJs
  • 允许编译 JavaScript 文件。
"allowJs": true
11、checkJs
  • 对 JavaScript 文件进行类型检查。
"checkJs": true
12、declaration
  • 生成 .d.ts 声明文件。
"declaration": true
13、sourceMap

生成源映射文件,便于调试。

"sourceMap": true
14、noEmit
  • 不生成输出文件,仅进行类型检查。
"noEmit": true
15、lib
  • 指定编译器可以使用的 JavaScript 标准库的列表。
  • 常见值:domdom.iterablees5es6es2015es2016es2017es2018es2019es2020es2021esnext
"lib": ["dom", "es6"]
16、moduleResolution
  • 指定模块解析策略。
  • 常见值:nodeclassic
"moduleResolution": "node"
17、baseUrl
  • 设置模块解析的基准目录。
"baseUrl": "."
18、paths
  • 用于模块解析的路径映射。
"paths": {"@src/*": ["src/*"],"@utils/*": ["src/utils/*"]
}
19、typeRoots
  • 指定类型声明文件的根目录。
"typeRoots": ["./types", "./node_modules/@types"]

20、types

  • 指定全局类型声明文件。
"types": ["node", "jest"]

21、noUnusedLocals

  • 报告未使用的局部变量。
"noUnusedLocals": true

22、noUnusedParameters

  • 报告未使用的函数参数。
"noUnusedParameters": true

23、noImplicitReturns

  • 报告函数中隐式的 any 类型返回值。
"noImplicitReturns": true

24、noFallthroughCasesInSwitch

  • 报告 switch 语句中的 fall-through 情况。
"noFallthroughCasesInSwitch": true

示例 tsconfig.json

{"compilerOptions": {"target": "es6","module": "commonjs","outDir": "./dist","rootDir": "./src","strict": true,"esModuleInterop": true,"skipLibCheck": true,"forceConsistentCasingInFileNames": true,"resolveJsonModule": true,"allowJs": true,"checkJs": true,"declaration": true,"sourceMap": true,"noEmit": false,"lib": ["dom", "es6"],"moduleResolution": "node","baseUrl": ".","paths": {"@src/*": ["src/*"],"@utils/*": ["src/utils/*"]},"typeRoots": ["./types", "./node_modules/@types"],"types": ["node", "jest"],"noUnusedLocals": true,"noUnusedParameters": true,"noImplicitReturns": true,"noFallthroughCasesInSwitch": true},"include": ["src/**/*"],"exclude": ["node_modules", "dist"]
}

通过合理配置 tsconfig.json,可以更好地管理和控制 TypeScript 项目的编译过程,提高开发效率和代码质量。每个属性都有其特定的用途,可以根据项目的具体需求进行调整。

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

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

相关文章

一文读懂JPA及Mybatis的原理和机制(面试经)

导览 前言Q:什么是JPA1. 简介2. 原理 Q:JPA持久化框架—Mybatis1. 内部组成与关系2. 各组件作用域和生命周期3. 动态SQL3.1 if语句3.2 choose-when-otherwise 4. mapper映射XML4.1 select4.2 insert 5. $与#的区别5.1 #{...}5.2 ${...} 结语精彩回顾 前言…

明日周刊-第23期

十月已过半,气温也转凉了,大家注意保温哦。冬吃萝卜,夏吃姜,在快要到来的冬季大家可以选择多吃点萝卜。 配图是本周末去商场抓娃娃的时候拍的照片,现在抓娃娃单次普遍都控制在1块钱以下了,还记得多年前的抓…

qt继承结构

一、 继承结构 所有的窗口类均继承自QWidget类,因此QWidget类本身包含窗口的特性。QWidget对象本身既可以作为独立窗口,又可以作为组件(子窗口)。 通过构造函数可以创建以上两种形态的QWidget: // 参数1:使…

[C#][winform]基于yolov8的道路交通事故检测系统C#源码+onnx模型+评估指标曲线+精美GUI界面

【重要说明】 该系统以opencvsharp作图像处理,onnxruntime做推理引擎,使用CPU进行推理,适合有显卡或者没有显卡windows x64系统均可,不支持macOS和Linux系统,不支持x86的windows操作系统。由于采用CPU推理,要比GPU慢。…

【重学 MySQL】七十一、揭秘数据库魔法——深入探索并引入视图

【重学 MySQL】七十一、揭秘数据库魔法——深入探索并引入视图 视图的定义视图的作用视图的注意事项 在MySQL数据库中,视图(View)是一种非常强大且灵活的工具,它为用户提供了以更安全、更清晰的方式查看和管理数据的途径。 视图的…

《计算机视觉》—— 换脸

效果如下: 完整代码: import cv2 import dlib import numpy as npJAW_POINTS list(range(0, 17)) RIGHT_BROW_POINTS list(range(17, 22)) LEFT_BROW_POINTS list(range(22, 27)) NOSE_POINTS list(range(27, 35)) RIGHT_EYE_POINTS list(range(36…

【深入解析】ChatGPT各版本在论文写作中的五大表现差异

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 人工智能在自然语言处理领域已取得了显著进展,尤其是OpenAI的ChatGPT系列在文本生成和理解方面表现突出。然而,不同版本的ChatGPT在论文写作中的表现存在明显差异…

Python 从入门到实战37(进程间通信)

我们的目标是:通过这一套资料学习下来,可以熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们讨论了通过multiprocessing模块创建进程操作的相关知…

力扣 142.环形链表Ⅱ【详细解释】

一、题目 二、思路 三、代码 /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {public ListNode detectCycle(ListNode hea…

javaWeb项目-ssm+jsp房屋出租管理系统功能介绍

本项目源码(点击下方链接下载):java-ssmjsp房屋出租管理系统实现源码(项目源码-说明文档)资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端&#xff…

[含文档+PPT+源码等]精品基于springboot实现的原生Andriod大学校园食堂外卖系统App

基于Spring Boot实现的原生Android大学校园食堂外卖系统App的背景可以从以下几个方面进行阐述: 一、项目背景与需求 随着移动互联网技术的快速发展和智能手机的普及,大学生对于便捷、高效的校园生活服务需求日益增长。大学校园食堂作为学生们日常用餐的…

【电商项目】1分布式基础篇

1 项目简介 1.2 项目架构图 1.2.1 项目微服务架构图 1.2.2 微服务划分图 2 分布式基础概念 3 Linux系统环境搭建 查看网络IP和网关 linux网络环境配置 补充P123(修改linux网络设置&开启root密码访问) 设置主机名和hosts映射 主机名解析过程分析&…

【问题解决】——当出现0xc000007b和缺少mfc140.dll时,该怎么做才能让软件可以打开

目录 事情起因 问题处理 明确定义 填坑之路 最后我是怎么解决的(不想看故事直接到这里) 事情起因 最近想要重新安装西门子博途来做西门子的一些算法的时候,发现自己软件装的是V15.1的版本,而买的plc1200固件版本要求至少16以…

性能评测第一,阿里开源可商用AI模型Ovis 1.6使用指南,AI多模态大模型首选

什么是 Ovis 1.6 Gemma 2 9B? Ovis 1.6 Gemma 2 9B 是阿里国际AI团队推出的最新多模态大模型(Multimodal Large Language Model,MLLM)。该模型旨在结构化地对齐视觉和文本嵌入,能够处理和理解多种不同类型的数据输入&…

抑郁症自测量表 API 接口,洞察情绪状态

抑郁症是一种常见的心理疾病,会给患者的生活和工作带来很大的困扰。为了帮助人们更好地了解自己的情绪状态,有一种抑郁症自测量表(简称SDS),它是一种能够反映病人主观抑郁症状的自评量表。下面我们将通过调用抑郁症自测…

基于FreeRTOS的LWIP移植

目录 前言一、移植准备工作二、以太网固件库与驱动2.1 固件库文件添加2.2 库文件修改2.3 添加网卡驱动 三、LWIP 数据包和网络接口管理3.1 添加LWIP源文件3.2 Lwip文件修改3.2.1 修改cc.h3.2.2 修改lwipopts.h3.2.3 修改icmp.c3.2.4 修改sys_arch.h和sys_arch.c3.2.5 修改ether…

Linux·文件与IO

1. 回忆文件操作相关知识 我们首先回忆一下关于文件的一些知识。 如果一个文件没有内容,那它到底有没有再磁盘中存在?答案是存在,因为 文件 内容 属性,即使文件内容为空,但属性信息也是要记录的。就像进程的…

硬件产品经理的开店冒险之旅(下篇)

缘起:自己为何想要去寻找职业第二曲线 承接上篇的内容,一名工作13年的普通硬件产品经理将尝试探索第二职业曲线。根本原因不是出于什么高大上的人生追求或者什么职业理想主义,就是限于目前的整体就业形式到了40岁的IT从业人员基本不可能在岗…

【Python】selenium遇到“InvalidArgumentException”的解决方法

在使用try……except 的时候捕获到这个错误: InvalidArgumentException: invalid argument (Session info: chrome112.0.5614.0) 这个错误代表的是,当传入的参数不符合期望时,就会抛出这个异常: InvalidArgumentException: invali…

day-69 使二进制数组全部等于 1 的最少操作次数 II

思路 与3191. 使二进制数组全部等于 1 的最少操作次数 I思路类似,区别在于该题每次将下标i开始一直到数组末尾所有元素反转,所以我们用一个变量可以统计翻转次数 解题过程 从左向右遍历数组的过程中,有两种情况需要进行翻转:1.当…