当前位置: 首页 > news >正文

TypeScript 项目配置

TypeScript 项目配置

基于 React + Vite ,比较完整且实用的 TypeScript 多配置拆分示例,适用于中大型项目,包含:

  • 基础公共配置:tsconfig.base.json
  • 前端浏览器模块配置:tsconfig.app.json
  • 后端 Node.js 模块配置:tsconfig.node.json
  • 顶层项目引用配置:tsconfig.json
1. tsconfig.base.json — 公共基础配置
{"compilerOptions": {"target": "ES2020",                    // 编译目标版本,兼顾现代环境"module": "ESNext",                    // 代码模块格式,开发时用 ESNext"lib": ["ESNext"],                     // 包含的库,基础语言功能"allowJs": false,                      // 是否允许编译 JS 文件"checkJs": false,                      // 是否检查 JS 文件"jsx": "react-jsx",                    // React JSX 转换方式"strict": true,                        // 启用严格类型检查"moduleResolution": "Node",            // 模块解析方式,兼容 node"esModuleInterop": true,               // 允许 CommonJS 默认导入"forceConsistentCasingInFileNames": true,  // 文件名大小写一致性"skipLibCheck": true,                  // 跳过依赖库的类型检查,加快编译"isolatedModules": true,               // 允许单文件编译,兼容 Babel"resolveJsonModule": true,             // 支持导入 JSON"baseUrl": ".",                       // 基础路径,配合 paths 使用"paths": {"@/*": ["src/*"],"@components/*": ["src/components/*"],"@assets/*": ["src/assets/*"]},"types": ["node"]                     // 默认引入 Node 类型},"exclude": ["node_modules","dist","build"]
}
2. tsconfig.app.json — 前端浏览器模块配置
{"extends": "./tsconfig.base.json",      // 继承基础配置"compilerOptions": {"target": "ESNext",                   // 现代浏览器支持 ESNext"lib": ["DOM", "DOM.Iterable", "ESNext"],  // 加入浏览器环境库"types": ["vite/client"]              // Vite 客户端环境类型},"include": ["src/app/**/*", "src/shared/**/*"],  // 需要编译的文件路径"exclude": ["src/node"]                // 排除后端代码
}
3. tsconfig.node.json — 后端 Node.js 模块配置
{"extends": "./tsconfig.base.json",      // 继承基础配置"compilerOptions": {"target": "ES2020",                   // Node.js 14+ 支持 ES2020 特性"module": "CommonJS",                 // Node.js 典型模块格式"lib": ["ES2020"],                    // Node.js 环境相关库"types": ["node"]                     // Node 类型声明},"include": ["src/node/**/*", "src/shared/**/*"], // 包含后端代码和共享代码"exclude": ["src/app"]                  // 排除前端代码
}
4. tsconfig.json — 顶层项目引用配置
{"files": [],                           // 这个顶层不单独编译文件"references": [{ "path": "./tsconfig.app.json" },   // 引用前端模块{ "path": "./tsconfig.node.json" }   // 引用后端模块]
}
补充说明
  • extends 关键字用来继承基础配置,减少重复。
  • references 用来声明项目间依赖,方便增量编译和代码导航。
  • include/exclude 让你区分前端和后端代码目录,避免编译不相关的代码。
  • "types" 根据项目需求加载不同环境的类型声明。
  • 你可以根据实际项目,增加如测试配置 tsconfig.test.json 等。

注意:通常针对 web 端,只需要 tsconfig.app.json 即可


5. 搭配 Vite.config.ts 配置文件路径
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path'// https://vite.dev/config/
export default defineConfig({plugins: [react()],resolve: {alias: {'@': path.resolve(__dirname, './src'), // 控制 import 语句解析},},
})

注意import path from 'path' 时可能会报错 找不到模块“path”或其相应的类型声明,意思是:说明 TypeScript 编译器无法识别 Node.js 内置模块 path 的类型。只需执行以下命令

npm install --save-dev @types/node

原因解析

  • TypeScript 默认只包含浏览器的类型定义;
  • path 属于 Node.js 内置模块;
  • 因此你必须手动引入 Node 类型定义库 @types/node 才能让 TypeScript 识别这些模块(包括 fspathprocess 等)。

补充:TypeScript 的价值(简洁总结)
价值点举例说明
类型提示 & IDE 体验提升自动补全、参数提示、跳转定义、文档弹出,写代码更快
提前发现错误编译时就能发现类型错误、拼写错误、参数错误,减少运行时 bug
提升代码可读性 & 可维护性明确函数/组件的输入输出,更容易理解别人写的代码
大型项目中防止“雪崩”式错误扩散改一个接口不会悄悄影响一堆地方,类型错误会立即暴露
更强的重构能力改名/提取/重构函数时,IDE 帮你定位所有受影响的地方
便于多人协作 &代码交接不用问接口字段是什么、不用到处看接口文档,直接在代码里体现
更容易做自动化文档、测试生成基于类型可以生成 Swagger、Mock、接口自动校验等
http://www.xdnf.cn/news/1005247.html

相关文章:

  • 时事新闻:2025 伦敦科技周
  • Odoo 基于规则的线索自动分配实践指南
  • C++ STL容器汇总
  • 大中台应用的层次抽象
  • bisheng系列(三)- 本地部署(后端 1.2版本)
  • 亚马逊云服务器配置推荐
  • PCL 导入VS配置的大量依赖项名称快速读取
  • LLaMA Factory 微调教程:如何构建高质量数据集?
  • 重启杀手--误操作梳理
  • 命令模式:解耦请求与执行的优雅之道
  • 高可靠性隔离驱动设计:NSi6602B-DSWR双通道栅极驱动器技术解析
  • stm32温湿度-超声波-LCD1602结合项目(Proteus仿真程序)
  • 判断一阶微分方程是线性齐次、线性非齐次或非线性,以及非线性方程是半线性或拟线性
  • 前端Vue3国际化开发 :使用vue-i18n库和Element Plus 组件实现
  • Tensorflow 基础知识:变量、常量、占位符、Session 详解
  • strncpy_s与_TRUNCATE
  • 汉化langfuse踩坑记录--docker卷挂载未生效问题修复及langfuse启动
  • 基于 SpringBoot + Vue 在线点餐系统(前后端分离)
  • javascript入门
  • LangGraph--搭建官方机器人聊天(带工具的)教程
  • vue 导航 + router-view 局部刷新
  • AI技术专题:电商AI专题
  • java使用aspose读取word里的图片
  • YOLOv8 模块添加与修改讲解:从源码修改到配置文件配置
  • Nacos服务注册失败解决方案
  • pysnmp 操作流程和模块交互关系的可视化总结
  • JVM深度解析:执行引擎、性能调优与故障诊断完全指南
  • 【Python从入门到精通】--pycharm虚拟环境详解
  • 深度解析关键词价值,实现精准流量匹配
  • SpringBoot解决下载接口文件名中文乱码问题的3种方法