错误 TS2602:JSX 元素隐式具有类型“任何”,因为全局类型“JSX.Element”不存在
Posted
技术标签:
【中文标题】错误 TS2602:JSX 元素隐式具有类型“任何”,因为全局类型“JSX.Element”不存在【英文标题】:error TS2602: JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist 【发布时间】:2016-10-07 00:58:15 【问题描述】:即使我已经像这样安装并引用了 Typings 库 'react'
/// <reference path="../../../typings/browser.d.ts" />
我仍然收到以下错误:
我还应该安装另一个 Typings 库吗?
【问题讨论】:
【参考方案1】:我通过安装反应类型定义解决了这个问题。
尝试运行yarn add --dev @types/react
【讨论】:
对于 npm,npm install --dev @types/react
有效【参考方案2】:
我通过重新加载 VSCode 解决了这个问题。
Ctrl + p > Developer: Reload Window
【讨论】:
我从 react-dom 16.x 升级到 17 后遇到了这个问题。重新加载窗口解决了这个问题。谢谢! 这完美解决了问题 天哪,那太好了 重启 TypeScript 语言服务器可能就足够了:CMD
+P
> Typescript: Restart TS Server
(输入rets
)【参考方案3】:
在 Typings 中有两个版本的 React。我用typings install react
和noImplicitAny
看到了这个问题。
我通过安装全局版本解决了这个问题:typings install dt~react --global
【讨论】:
我真希望他们能整合他们的图书馆。不得不在多个地方处理全局\环境\主要冲突对我们的团队来说是一个无穷无尽的麻烦:( 我完全同意。我希望更多的供应商将他们的类型发布到他们的库中(比如 ImmutableJS)【参考方案4】:尝试运行这个:
1. npm i @types/react --save-dev
2. npm i @types/react-dom --save-dev
为我工作。
【讨论】:
也为我工作!当您将鼠标悬停在标记的文本上时,VS Code 也会提出此建议。【参考方案5】:把这个配置放到tsconfig.json文件中,这样ts服务器就不会识别出那种类型的错误
"compilerOptions":
"outDir": "build/dist",
"module": "commonjs",
"target": "es5",
"lib": ["es6", "dom"],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true
,
"exclude": [
"node_modules",
"build",
"scripts",
"acceptance-tests",
"webpack",
"jest",
"src/setupTests.ts"
],
"types": [
"typePatches"
]
【讨论】:
必须是 "jsx": "react-jsx"【参考方案6】:我遇到了类似的问题,在阅读了其他解决方案后,我查看了我的 tsconfig.json
,显然它(vs-code)抱怨我的配置中有一个小错误,当我纠正它时,它就消失了。
所以主要带走:检查 tsconfig 中是否没有错误
注意
我不确定该错误是否相关,但是当我的allowJs
设置为 false 时,vs-code 抱怨 checkJs
已定义(未设置为 false)。所以基本上我的解决方案是将allowJs
和checkJs
都设置为false:
"compilerOptions":
...
"allowJs": false,
"checkJs": false,
...
【讨论】:
【参考方案7】:我遇到了同样的问题,将tsconfig.json
更新为以下代码并重新启动了为我工作的服务器。
"compilerOptions":
"target": "ES2016",
"declaration": false,
"module": "commonjs",
"moduleResolution": "node",
"noImplicitAny": false,
"allowJs": false,
"preserveConstEnums": true,
"removeComments": true,
"sourceMap": true,
"typeRoots": [
"./node_modules/@types"
],
"keyofStringsOnly": true,
"lib": ["es2015", "es2017", "dom"],
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"jsx": "react"
【讨论】:
【参考方案8】:我还需要添加npm i @types/react-dom --save-dev
来解决这个问题。
【讨论】:
【参考方案9】:从handbook 开始,React 必须有一个大写字母。问题中的代码显然没有。
【讨论】:
认为值得让您知道为什么您(或未来的读者)被否决的原因:只有 React 组件必须使用大写字母,而不是 html 元素以上是关于错误 TS2602:JSX 元素隐式具有类型“任何”,因为全局类型“JSX.Element”不存在的主要内容,如果未能解决你的问题,请参考以下文章
TS7053:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“用户经济”
错误:参数“e”隐式具有“任何”类型。 TS7006 - 反应打字稿