react配置ts

来源:2-7 【TypeScript配置】深挖TS编译流程

xryb

2022-05-08

图片描述老师请问我在原来的项目中配置了ts之后,为什么会报这个错

写回答

2回答

Joseph_Ho

9天前

原因是没有自动生成tsconfig.json,缺少对tsx的默认支持,改成

import App from './App.tsx';就不会报错了,最好还是手动新增一个tsconfig.json文件,如下所示,关键是"resolveExtensions": [".tsx"".ts"".jsx"".js"".json"],添加对tsx的支持

------------------------

{

"compilerOptions": {

/* 基础配置:指定 TS 编译目标和模块系统 */

"target": "ESNext", // 编译为最新 ES 语法(兼容现代浏览器/Node)

"module": "ESNext", // 模块系统使用 ES 模块(import/export)

"moduleResolution": "Bundler", // 适配打包工具(Vite/Webpack)的模块解析逻辑(关键!解决后缀省略问题)

"resolveExtensions": [".tsx", ".ts", ".jsx", ".js", ".json"], // 自动补全的文件后缀(优先 TSX/TS,避免和 JS 冲突)

"allowImportingTsExtensions": true, // 允许导入时显式写 .ts/.tsx 后缀(兼容你之前的写法)


/* React 专属配置 */

"jsx": "react-jsx", // 支持 React 17+ 的新 JSX 转换(无需手动导入 React)

"jsxImportSource": "react", // 指定 JSX 运行时来自 react(React 18 推荐)


/* 类型严格性:推荐开启,提前规避类型错误 */

"strict": true, // 开启所有严格类型检查(核心!必开)

"noImplicitAny": true, // 禁止隐式 any 类型(避免漏写类型)

"strictNullChecks": true, // 严格检查 null/undefined(避免空指针错误)

"strictFunctionTypes": true, // 严格检查函数参数/返回值类型

"strictPropertyInitialization": true, // 严格检查类属性初始化


/* 兼容性与优化配置 */

"esModuleInterop": true, // 兼容 CommonJS 模块(如导入 Node 模块时不报错)

"forceConsistentCasingInFileNames": true, // 强制文件名大小写一致(避免跨系统报错)

"skipLibCheck": true, // 跳过第三方库的类型检查(加速编译)

"forceEsModuleInterop": true, // 强制 ES 模块互操作(解决 CommonJS 导入警告)


/* 路径与输出配置 */

"baseUrl": "./src", // 基础路径(导入时可简化路径,如 import xxx from 'components/xxx')

"paths": {

// 路径别名(可选,简化深层组件导入)

"@/*": ["*"], // 例如:import Button from '@/components/Button' 等价于 ./src/components/Button

"@/hooks/*": ["hooks/*"],

"@/utils/*": ["utils/*"]

},

"outDir": "./dist", // 编译后输出目录(打包工具会覆盖,仅 TS 单独编译时生效)

"rootDir": "./src", // 源码根目录(指定 TS 只编译 src 下的文件)


/* 其他优化 */

"sourceMap": true, // 生成源映射文件(调试时可映射到 TS 源码)

"noEmit": true, // 只做类型检查,不生成编译后的 JS 文件(由打包工具负责编译,提升开发效率)

"isolatedModules": true, // 确保每个文件都是独立模块(兼容 Vite/Webpack 等打包工具)

"allowJs": true, // 允许在 TS 项目中导入 JS 文件(兼容老代码)

"checkJs": false // 不检查 JS 文件的类型(如果需要检查可设为 true)

},

"include": [

"src/**/*" // 要进行类型检查的文件(src 下所有 .ts/.tsx/.js/.jsx 文件)

],

"exclude": [

"node_modules", // 排除 node_modules(不检查第三方库)

"dist", // 排除输出目录

"**/*.test.ts",

"**/*.test.tsx" // 可选:排除测试文件(如果测试文件有单独配置)

]

}


0
0

阿莱克斯刘

2022-05-10

你原来的项目是js对吧,在引入typescript以后还需要编译一下,翻译为js代码才能运行。

0
1
Lex_Pierce
我也是同样的问题在第一个my-app文件里 npm install --save typescript @types/node @types/react @types/react-dom @types/jest 然后修改了App.js index.js为App.tsx 和index.tsx 之后npm start 也是一样的报错
2024-01-03
共1条回复

React 18 系统精讲 结合TS打造旅游电商平台

React 18 精讲 + 结合 TS 实战 + 热门业务开发,获取必备技能

2042 学习 · 1035 问题

查看课程