JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists

avatar

Borislav Hadzhiev

Last updated: Apr 17, 2022

banner

Photo from Unsplash

JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists #

To solve the error "JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists", make sure to install the typings for react running the command npm install --save-dev @types/react@latest @types/react-dom@latest and restart your IDE.

jsx element implicitly has type any

Open your terminal in your project's root directory (where your package.json file is located) and run the following command:

shell
# 👇️ with NPM npm install --save-dev @types/react@latest @types/react-dom@latest # 👇️ if you also want to update react and react-dom npm install react@latest react-dom@latest # ------------------------------ # 👇️ with YARN yarn add @types/react@latest @types/react-dom@latest --dev # 👇️ if you also want to update react and react-dom yarn add react@latest react-dom@latest

The command will update the versions of your react typings.

Make sure that the jsx option in your tsconfig.json file is set to react-jsx.
tsconfig.json
{ "compilerOptions": { // 👇️ make sure it's set to react-jsx "jsx": "react-jsx" // ... rest }, // ... rest }

When the jsx option is set to react-jsx, it causes the compiler to emit .js files with the JSX changed to _jsx calls.

Make sure to restart your development server and your IDE if necessary. Your dev server won't pick up the changes until you stop it and re-run the npm start command.

If the error is not resolved, try to delete your node_modules and package-lock.json (not package.json) files, re-run npm install and restart your IDE.

shell
# 👇️ delete node_modules and package-lock.json rm -rf node_modules rm -f package-lock.json rm -f yarn.lock # 👇️ clean npm cache npm cache clean --force npm install
Make sure to restart your IDE and dev server if the error persists. VSCode often glitches and a reboot solves things sometimes.

If you use VSCode, you can restart your IDE by clicking CTRL + Shift + P or ( + Shift + P on Mac) to open the command palette and type and select Reload Window.

If you're still getting the "JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists" error, open your package.json file and make sure it contains the @types/react package in the devDependencies object.

package.json
{ // ... rest "dependencies": { "react": "^18.0.0", "react-dom": "^18.0.0", }, "devDependencies": { "@types/react": "^18.0.5", "@types/react-dom": "^18.0.1", } }

You can try to manually add the lines and re-run npm install.

shell
npm install

Or install the latest version of the package:

shell
# 👇️ with NPM npm install --save-dev @types/react@latest @types/react-dom@latest # 👇️ if you also want to update react and react-dom npm install react@latest react-dom@latest # ------------------------------ # 👇️ with YARN yarn add @types/react@latest @types/react-dom@latest --dev # 👇️ if you also want to update react and react-dom yarn add react@latest react-dom@latest

Conclusion #

To solve the error "JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists", make sure to install the typings for react running the command npm install --save-dev @types/react@latest @types/react-dom@latest and restart your IDE.

I wrote a book in which I share everything I know about how to become a better, more efficient programmer.
book cover
You can use the search field on my Home Page to filter through all of my articles.