📜  JSX 元素隐式具有“any”类型,因为没有接口“JSX.IntrinsicElements”存在.ts(7026) - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:32:25.957000             🧑  作者: Mango

JSX 元素隐式具有“any”类型

在使用 TypeScript 开发 React 应用时,你可能会遇到这个警告信息:JSX 元素隐式具有“any”类型,因为没有接口“JSX.IntrinsicElements”存在.ts(7026)。这个警告信息出现是因为 TypeScript 不知道你在 JSX 中使用的 HTML 元素是否有效,因此需要一个接口来告诉 TypeScript 如何验证这些 HTML 元素的有效性。

模块引入(推荐)

解决这个警告信息的最简单方法是引入一个类型定义文件,这样就可以让 TypeScript 知道如何验证 JSX 中的 HTML 元素。你可以安装 react-typescript 来获取这个类型定义文件。

npm install --save-dev @types/react

安装完成后,在你的 tsconfig.json 文件中添加如下配置:

{
  "compilerOptions": {
    "jsx": "react",
    ...
  }
}

这个配置告诉 TypeScript 使用 React 的 JSX 语法,并且从 @types/react 中加载类型定义文件。这样,警告信息就会消失。

手动定义

如果你想自己定义这个接口,可以在一个单独的文件中创建一个接口,并将它导出。接口名称应该是 JSX.IntrinsicElements,并且包含所有 HTML 元素的属性名称。

// MyIntrinsicElements.d.ts

interface JSX {
  IntrinsicElements: {
    [elemName: string]: any;
  }
}

export {};

接下来,将这个文件包含在你的项目中。现在,TypeScript 将使用这个接口来验证 JSX 中的 HTML 元素。

总结

当你在开发 React 应用时,警告信息 JSX 元素隐式具有“any”类型,因为没有接口“JSX.IntrinsicElements”存在.ts(7026) 可能会出现。这个警告信息意味着 TypeScript 缺少 HTML 元素的接口定义,因此需要一个新的接口来告诉 TypeScript 如何验证这些 HTML 元素的有效性。使用 @types/react 类型定义文件是最简单的解决方法,如果你想自定义,也可以手动定义一个接口文件。