TypeScript 中的 tsconfig.json

什么是 tsconfig.json?

tsconfig.json 是 TypeScript 编译器的配置文件,用于指导编译器如何编译 TypeScript 代码。在 TypeScript 项目中,如果存在这个文件,那么在执行 tsc 命令时,编译器将会使用该文件中定义的配置选项进行编译。

结构和基本配置选项

让我们先来看一下一个简单的 tsconfig.json 文件的结构及其基本配置选项:

{"compilerOptions": {"target": "es5","module": "commonjs","outDir": "./dist","strict": true,"baseUrl": "./src","paths": {"*": ["*", "src/*"]},"allowJs": true,"noImplicitAny": true,"sourceMap": true},"include": ["src/**/*"],"exclude": ["node_modules", "**/*.spec.ts"]
}
  • compilerOptions:这是一个对象,包含了编译器的各种选项。

    • target:指定编译后的 JavaScript 代码应该符合的 ECMAScript 标准版本。常见的值有 "es5", "es6", "es2015", "es2016" 等。这决定了编译器生成的 JavaScript 代码的语法特性。
    • module:指定生成的模块化代码的模块系统。常见的值有 "commonjs", "amd", "es6", "umd" 等。它决定了编译器如何将 TypeScript 的模块转换为 JavaScript 的模块。
    • outDir:指定编译后的 JavaScript 文件输出目录。编译器会将编译后的 JavaScript 文件输出到指定的目录中。
    • strict:启用严格的类型检查。当启用时,编译器会更严格地检查类型,并发出更多的类型错误。
    • baseUrl:用于解析非相对模块名称的基本目录。它指定了模块名称的基础路径,用于解析模块的导入语句。
    • paths:指定模块的路径映射,用于模块解析。可以为指定的模块名称提供自定义的解析路径。
    • allowJs:允许编译 JavaScript 文件。当启用时,编译器可以编译项目中的 JavaScript 文件。
    • noImplicitAny:在表达式和声明上有隐含的 any 类型时报错。当启用时,编译器会在遇到隐含的 any 类型时发出警告或错误。
    • sourceMap:生成相应的 .map 文件,方便调试。启用后,编译器会生成与编译后的 JavaScript 文件相对应的源映射文件,以便在调试时可以将编译后的 JavaScript 代码映射回原始的 TypeScript 代码。
  • include:一个字符串数组,指定需要编译的文件或文件夹的路径模式。编译器会编译匹配这些模式的文件。

  • exclude:一个字符串数组,指定不需要编译的文件或文件夹的路径模式。编译器会排除匹配这些模式的文件。

更多常用选项

除了上述基本配置选项外,tsconfig.json 还支持许多其他常用的选项,如下所示:

  • esModuleInterop:启用 __importDefault__importStar 来支持 CommonJS 和 AMD 模块之间的互操作性。
  • declaration:生成相应的 .d.ts 声明文件。当启用时,编译器会为每个 TypeScript 文件生成一个对应的声明文件。
  • strictNullChecks:启用严格的 null 检查。当启用时,编译器会检查是否存在可能为 nullundefined 的值,并发出相应的警告或错误。
  • noUnusedLocalsnoUnusedParameters:检测并报告未使用的局部变量和参数。
  • jsx:指定 JSX 语法的支持。常见的值有 "preserve", "react", "react-native" 等。
  • allowSyntheticDefaultImports:启用允许默认导入来自没有默认导出的模块的内容。

使用 extends 继承配置

有时候,在多个 TypeScript 项目中可能存在相同的配置选项。为了避免重复,可以使用 extends 选项来继承另一个配置文件的配置:

{"extends": "./common-tsconfig.json","compilerOptions": {"outDir": "./build"}
}

通过 extends 选项,可以将当前配置文件继承自另一个配置文件,并在此基础上进行修改或添加额外的配置选项。

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

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

相关文章

【Java】解决Java报错:IllegalArgumentException

文章目录 引言1. 错误详解2. 常见的出错场景2.1 非法的参数值2.2 空值或 null 参数2.3 非法的数组索引 3. 解决方案3.1 参数验证3.2 使用自定义异常3.3 使用Java标准库中的 Objects 类 4. 预防措施4.1 编写防御性代码4.2 使用注解和检查工具4.3 单元测试 结语 引言 在Java编程…

【NPS】微软NPS配置802.1x,验证域账号,动态分配VLAN(有线网络续篇)

继上一篇文章中成功实施了有线802.1x验证域账号并动态分配VLAN的策略之后,我们迎来了一个新的目标:在用户验证失败时,自动分配一个Guest VLAN,以确保用户至少能够访问基本的网络服务。这一改进将显著提升网络的灵活性和用户的上网…

书籍数字字符串转换为字母组合的种数(4)0607

题目: 给定一个字符串str,str全部由数字字符组成,如果str中某一个或某相邻两个字符组成的子串值在1~26之间,则这个子串可以转换为一个字母。规定“1”转换为“A”,“2”转换为“B”,“3”转换成“C”……“…

Kafka的分区副本机制

目录 生产者的分区写入策略 轮询策略 随机策略 按key分配策略 乱序分区 自定义分区策略 实现步骤: 消费者组Rebalance机制 Rebalance触发时机 Rebalance的不良影响 消费者分区分配策略 Range范围分配策略 RoundRobin轮询策略 Stricky粘性分配策略 生产…

计算机网络-NAT配置与ACL

目录 一、ACL 1、ACL概述 2、ACL的作用 3、ACL的分类 4、ACL的配置格式 二、NAT 1、NAT概述 2、NAT分类 2.1 、 静态NAT 2.2 、 动态NAT 3、NAT的功能 4、NAT的工作原理 三、NAT配置 1、静态NAT配置 2、动态NAT配置 四、总结 一、ACL 1、ACL概述 ACL&#xff…

让编程变得更加直观与高效 “JAVA图形化编程”官网上线!

公测预约开启 我们历经了长达三年的时光,执着地坚守并潜心地进行探索,始终怀着一颗敬畏的心,最终极为谨慎地推出了这款图形化编程桌面。它能够使得业务与程序清晰明了地呈现,而且还能与传统的低零代码平台实现紧密…

新品发布 | 飞凌嵌入式RK3576核心板,为AIoT应用赋能

为了充分满足AIoT市场对高性能、高算力和低功耗主控日益增长的需求,飞凌嵌入式全新推出基于Rockchip RK3576处理器开发设计的FET3576-C核心板! 集成4个ARM Cortex-A72和4个ARM Cortex-A53高性能核,内置6TOPS超强算力NPU,为您的AI…

LeetCode 两数之和 + 三数之和

两数之和 简单题 思路:一个Map,key是数值,value是该数值对应的下标,遍历的时候判断一下当前数组下标对应的值在map里有没有可组合成target的(具体体现为在map里找target-nums【i】),如果有,直接…

IDEA使用阿里通义灵码插件

在这个AI火热的时代,纯手工写代码已经有点out了,使用AI插件可以帮我们快速写代码,起码能省去写那些简单、重复性的代码,大大提高编码效率,在这里我推荐使用阿里的通义灵码 注册安装 安装注册好后,打开我们…

深入探索Spark MLlib:大数据时代的机器学习利器

随着大数据技术的迅猛发展,机器学习在各行各业的应用日益广泛。Apache Spark作为大数据处理的利器,其内置的机器学习库MLlib(Machine Learning Library)提供了一套高效、易用的工具,用于处理和分析海量数据。本文将深入探讨Spark MLlib,介绍其核心功能和应用场景,并通过…

【流媒体】音频相关概念详解

文章目录 一、前言二、概述三、音频相关概念1、采样率(Sampling rate)2、位深度(Bit depth)3、比特率(Bit rate)4、声道(Audio channel)5、音频帧6、音频编码7、音频解码 一、前言 …

【vuejs】$nextTick的原理分析和使用场景

1. $nextTick 概述 Vue.js 框架中的 $nextTick 是一个非常重要的 API,它允许开发者延迟回调函数的执行直到下次 DOM 更新循环之后。这意味着,当开发者在 Vue 组件中更改了数据,并且想要在 DOM 更新完成后执行某些操作时,可以使用…

总结开发过程遇到问题有哪些渠道可以寻找解决方案

罗列一下 百度、ChatGPT/讯飞星火等AI、Stack Overflow、github isssue 平时开发过程遇到问题的主要解决方式都是百度或者询问ChatGPT,当然在java中这两个方式也能解决百分之80的问题,毕竟java的社区圈够热闹。 如何优雅地使用 Stack Overflow 一、学…

搭建自己的DNS服务器

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

腺苷调节合成高密度脂蛋白用于三阴性乳腺癌的化学免疫治疗

引用信息 文 章:Adenosine-modulating synthetic high-density lipoprotein for chemoimmunotherapy of triple-negative breast cancer 期 刊:Journal of Controlled Release(影响因子:10.8) 发表时间&am…

深入探索:十种流行的深度神经网络及其运作原理

算法 深入探索:十种流行的深度神经网络及其运作原理一、卷积神经网络(CNN)基本原理工作方式 二、循环神经网络(RNN)基本原理工作方式 三、长短期记忆网络(LSTM)基本原理工作方式 四、门控循环单…

jupyter notebook默认工作目录修改

jupyter notebook默认工作目录修改 1、问题2、如何修改jupyter notebook默认工作目录 1、问题 anaconda安装好之后,我们启动jupyter notebook会发现其默认工作目录是在C盘,将工作目录放在C盘会让C盘很快被撑爆,我们应该将jupyter notebook默…

进阶篇01——存储引擎

MySQL体系结构 存储引擎 引擎有多种类型,MySQL支持多种存储引擎,默认的存储引擎为innodb。不同的存储引擎有不同的特点,适用不同的场景。 innodb存储引擎 简介 innodb的逻辑存储结构 MYISAM存储引擎 memory存储引擎 三种引擎特点对比&…

2024华为数通HCIP-datacom最新题库(变题更新③)

请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 1、…

融合创新:Web3如何重新定义网络生态

随着区块链技术的不断发展和Web3时代的到来,我们正在见证着互联网生态的巨大变革。Web3将传统的互联网架构转变为去中心化、开放、透明的新网络生态,为创新和合作提供了全新的可能性。本文将深入探讨Web3如何重新定义网络生态,探索融合创新的…