TS - tsconfig.json 和 tsconfig.node.json 的关系,如何在TS 中使用 JS 不报错
目录
- 1,前言
- 2,二者关系
- 2.1,使用
- 3,遇到的问题
- 3.1,TS 中使用 JS
1,前言
通过 Vite 创建的 Vue3 + TS 项目,根目录下会有 tsconfig.json 和 tsconfig.node.json 文件,并且存在引用关系:
{"compilerOptions": {// 其他配置项...},"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"],"references": [{ "path": "./tsconfig.node.json" }]
}
tsconfig.node.json 文件(配置项比 tsconfig.json 少很多):
{"compilerOptions": {"composite": true, // 配合 references 配置项使用。// 其他配置项...},"include": ["vite.config.ts"]
}
2,二者关系
1,TS 只能识别 tsconfig.json 为配置文件,不能识别其他的配置文件。
2,随着项目的变的越来越复杂,为了更精细化的控制,需要允许为不同的文件设置不同的配置。
基于上面的2个原因,TS增加一个功能:项目引用(Project References)。
2.1,使用
以 tsconfig.json 和 tsconfig.node.json 为例,其他的配置文件必须有一个配置项 "composite": true,并且在 tsconfig.json 文件中通过配置项 references 引入,这样 TS 就能识别。
同时,不同的配置文件之间的配置项相互独立,只会影响当前配置文件中的 include 字段。
所以,Vite 创建的 Vue3 + TS 项目中,
tsconfig.node.json只会影响到vite.config.ts文件。
3,遇到的问题
3.1,TS 中使用 JS
接手的一个Vue3项目中,在 main.ts 中遇到下面的报错(竟然一直没有解决):

报错信息:
Could not find a declaration file for module './App.vue'. 'd:/xxx/src/App.vue' implicitly has an 'any' type.ts(7016)
直接搜索错误 implicitly has an 'any' type,得到答案,修改配置项即可:
{"compilerOptions": {"noImplicitAny": false}
}
但后来发现,问题的产生是因为其他同事觉得 ts 麻烦,想直接使用 js,所以做了如下修改:
<script setup lang="ts">
<!-- 改为 -->
<script setup>
此时配置项 "strict": true 就会发挥作用(第5点),
该配置项启用时,包含的一些关键编译选项:
-
strictBindCallApply: 确保 bind, call, apply 方法的参数类型被正确地类型检查。 -
strictFunctionTypes: 对函数类型进行严格检查,包括参数和返回值的类型。这意味着函数的参数列表和返回值类型必须完全匹配。 -
strictNullChecks: 启用严格的空值检查。在这种模式下,TypeScript 编译器会更加严格地检查位置类型和联合类型中可能为 null 或 undefined 的位置。 -
strictPropertyInitialization: 确保类的非 undefined 属性在构造函数中被初始化。 -
noImplicitAny: 禁止使用隐式的 any 类型。这有助于避免类型系统的退化,确保类型被明确地声明。 -
strictTypePredicates: 严格检查类型谓词(如 typeof, instanceof)在类型守卫中的使用。 -
noImplicitThis: 确保 this 参数被明确地类型化,而不是隐式地推断为 any 类型。 -
alwaysStrict: 将严格模式应用于所有输入文件,就像它们是以严格模式开始的。
所以更准确的修改,应该是增加下面配置项即可:
{"compilerOptions": {"allowJs": true}
}
以上。
参考
相关文章:
TS - tsconfig.json 和 tsconfig.node.json 的关系,如何在TS 中使用 JS 不报错
目录 1,前言2,二者关系2.1,使用 3,遇到的问题3.1,TS 中使用 JS 1,前言 通过 Vite 创建的 Vue3 TS 项目,根目录下会有 tsconfig.json 和 tsconfig.node.json 文件,并且存在引用关系…...
revisiting拉普拉斯模板
二维向量的二阶微分是Hessian矩阵,拉普拉斯算子是将两个独立的二阶微分求和,对二阶微分的近似。 我不认同冈萨雷斯的8邻域拉普拉斯模板。 MATLAB图像处理工具箱中fspecial函数’laplacian’参数给的拉普拉斯模板: 对于数字滤波器ÿ…...
深入分析计算机网络性能指标
速率带宽吞吐量时延时延带宽积往返时间RTT利用率丢包率图书推荐内容简介作者简介 速率 连接在计算机网络上的主机在数字信道上传送比特的速率,也称为比特率或数据率。 基本单位:bit/s(b/s、bps) 常用单位:kb/s&#x…...
pyflink 安装和测试
FPY Warning! 安装 apache-Flink # pip install apache-Flink -i https://pypi.tuna.tsinghua.edu.cn/simple/ Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple/ Collecting apache-FlinkDownloading https://pypi.tuna.tsinghua.edu.cn/packages/7f/a3/ad502…...
《网络故障处理案例:公司网络突然中断》
网络故障处理案例:公司网络突然中断 一、故障背景 某工作日上午,一家拥有 500 名员工的公司突然出现整个网络中断的情况。员工们无法访问互联网、内部服务器和共享文件,严重影响了工作效率。 二、故障现象 1. 所有员工的电脑…...
JavaSE:9、数组
1、一维数组 初始化 import com.test.*;public class Main {public static void main(String [] argv){int a[]{1,2};int b[]new int[]{1,0,2};// int b[]new int[3]{1,2,3}; ERROR 要么指定长度要么大括号里初始化数据算长度int[] c{1,2};int d[]new int[10];} }基本类型…...
【裸机装机系列】2.kali(ubuntu)-裸机安装kali并进行磁盘分区-2024.9最新
【前言】 2024年为什么弃用ubuntu,请参考我写的另一篇博文:为什么不用ubuntu,而选择基于debian的kali操作系统-2024.9最新 【镜像下载】 1、镜像下载地址 https://www.kali.org/get-kali/选择installer-image,进入界面下载相应的ISO文件 我…...
解决:Vue 中 debugger 不生效
目录 1,问题2,解决2.1,修改 webpack 配置2.2,修改浏览器设置 1,问题 在 Vue 项目中,可以使用 debugger 在浏览器中开启调试。但有时却不生效。 2,解决 2.1,修改 webpack 配置 通…...
Mac笔记本上查看/user/目录下的文件的几种方法
在Mac笔记本上查看/user/下的文件,可以通过多种方法实现。以下是一些常见的方法: 一、使用Finder 打开Finder:点击Dock栏中的Finder图标,或者使用快捷键Command F。 导航到用户目录: 在Finder的菜单栏中࿰…...
工程师 - ACPI和ACPICA的区别
ACPI(高级配置和电源接口)和 ACPICA(ACPI 组件架构)密切相关,但在系统电源管理和配置方面却有不同的作用。以下是它们的区别: ACPI(高级配置和电源接口) - 定义: ACPI 是…...
一文快速上手-create-vue脚手架
文章目录 初识 create-vuecreate-vue新建项目Vue.js 3 项目目录结构项目的运行和打包vite.config.js文件解析其他:webpack和Vite的区别 初识 create-vue create-vue类似于Vue CLI脚手架,可以快速创建vuejs 3项目,create-vue基于Vite。Vite支…...
笔记整理—内核!启动!—kernel部分(7)rcs文件和登录部分与密码解析
该文件的位置在/etc/init.d/rcs,前文说过这个是一个配置文件,最开始的地方首先就是PATH相关的用export导出相关的PATH做环境变量,将可执行路径导为PATH执行时就不用写全路径了,该位置的PATH路径导出了/bin、/sbin、/usr/bin、/usr…...
朴素贝叶斯 (Naive Bayes)
朴素贝叶斯 (Naive Bayes) 通俗易懂算法 朴素贝叶斯(Naive Bayes)是一种基于概率统计的分类算法。它的核心思想是通过特征的条件独立性假设来简化计算复杂度,将复杂的联合概率分布分解为特征的独立概率分布之积。 基本思想 朴素贝叶斯基于…...
高德2.0 多边形覆盖物无法选中编辑
多边形覆盖物无法选中编辑。先检查一下数据的类型得是<number[]>,里面是字符串的虽然显示没问题,但是不能选中编辑。 (在项目中排查了加载时机,事件监听…等等种种原因,就是没发现问题。突然想到可能是数据就有问题…...
时序最佳入门代码|基于pytorch的LSTM天气预测及数据分析
前言 在本篇文章,我们基于pytorch框架,构造了LSTM模型进行天气预测,并对数据进行了可视化分析,非常值得入门学习。该数据集提供了2013年1月1日至2017年4月24日在印度德里市的数据。其中包含的4个参数是平均温度(meant…...
85-MySQL怎么判断要不要加索引
在MySQL中,决定是否为表中的列添加索引通常基于查询性能的考量。以下是一些常见的情况和策略: 查询频繁且对性能有影响的列:如果某个列经常用于查询条件,且没有创建索引,查询性能可能会下降。 在WHERE、JOIN和ORDER B…...
车载软件架构 --- SOA设计与应用(中)
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...
MATLAB求解微分方程和微分方程组的详细分析
目录 引言 微分方程的定义 MATLAB求解常微分方程 参数分析: MATLAB求解偏微分方程 刚性和非刚性问题 总结 引言 微分方程在物理、工程、经济和生物等多个领域有着广泛的应用。它们用于描述系统中变量与其导数之间的关系,通过这些方程可以解释和预…...
Sybase「退役」在即,某公共卫生机构如何实现 SAP Sybase 到 PostgreSQL 的持续、无缝数据迁移?
使用 TapData,化繁为简,摆脱手动搭建、维护数据管道的诸多烦扰,轻量替代 OGG, Kettle 等同步工具,以及基于 Kafka 的 ETL 解决方案,「CDC 流处理 数据集成」组合拳,加速仓内数据流转,帮助企业…...
如何通过Chrome浏览器轻松获取视频网站的TS文件
在当今这个信息爆炸的时代,视频内容成为了我们获取知识和娱乐的重要方式。然而,许多视频网站出于版权保护等原因,往往限制用户直接下载视频。今天,我将教你如何利用Chrome浏览器轻松下载视频网站的TS文件,甚至批量下载…...
Nano Banana Pro图像生成与编辑技术解析
介绍 Nano Banana Pro 不久前,发布了Nano Banana(Gemini 2.5 Flash图像模型)。从修复旧照片到生成微型模型,Nano Banana在图像编辑领域迈出了一大步,让普通创作者能够表达自己的创造力。今天,推出Nano Bana…...
ensp安装遇难题?快马AI助手智能诊断并生成个性化修复方案
eNSP安装遇难题?快马AI助手智能诊断并生成个性化修复方案 最近在搭建网络实验环境时,遇到了eNSP安装后设备启动失败的问题。作为一个网络初学者,面对各种错误代码和复杂的配置步骤,确实有些手足无措。好在发现了InsCode(快马)平台…...
BilibiliDown:三步实现B站音频高效提取与批量处理全攻略
BilibiliDown:三步实现B站音频高效提取与批量处理全攻略 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors…...
SEO_中小企业低成本开展SEO推广的实用方案
引言:为什么中小企业需要SEO推广 在当今的互联网时代,中小企业如何在海量的网站中脱颖而出,吸引更多的潜在客户,这是一个迫切需要解决的问题。搜索引擎优化(SEO)推广是提升网站在搜索引擎上排名的重要手段…...
告别系统资源占用困扰:sguard_limit智能优化工具实现性能提升全指南
告别系统资源占用困扰:sguard_limit智能优化工具实现性能提升全指南 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源,支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 在数字生活中,…...
微信聊天记录管理新范式:WeChatMsg让数据掌控回归用户
微信聊天记录管理新范式:WeChatMsg让数据掌控回归用户 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...
用快马平台十分钟复刻lostlife:快速构建你的首个交互式游戏原型
最近想尝试做个简单的交互式游戏原型,正好看到InsCode(快马)平台可以快速生成项目代码,就试了试复刻类似lostlife的玩法。整个过程比想象中顺利,分享下我的实现思路: 确定核心交互逻辑 游戏的核心是点击角色触发反馈,所…...
无需重装!修复赛博朋克2077 DirectX错误:d3dx9_43.dll丢失的快速解决方法
当你满心期待地启动《赛博朋克2077》,却只等来一个“由于找不到d3dx9_43.dll,无法继续执行代码”的错误弹窗,游戏就此卡死,确实让人瞬间血压飙升。别急,这个报错并非意味着你的游戏文件损坏,更不需要重装那…...
StructBERT中文句子匹配效果展示:客服问题精准召回、论文查重阈值调优案例
StructBERT中文句子匹配效果展示:客服问题精准召回、论文查重阈值调优案例 1. 引言:为什么需要精准的句子匹配? 在日常工作和生活中,我们经常遇到这样的场景: 客服系统中,用户问"怎么修改登录密码&…...
BRV自定义扩展开发:从零构建专属列表组件的终极教程
BRV自定义扩展开发:从零构建专属列表组件的终极教程 【免费下载链接】BRV [永久维护] Android 快速构建 RecyclerView, 比 BRVAH 更简单强大 项目地址: https://gitcode.com/gh_mirrors/br/BRV 想要在Android开发中快速构建功能强大的RecyclerView列表吗&…...
