网站搜索

javascript - 我如何在 TypeScript 中使用非 TypeScript 的 React 组件?


我在 React 和 Typescript 方面是初学者。我在使用 React 组件时遇到了问题,例如 https://www.npmjs.com/package/react-toggle-button,在 Typescript 中使用时。

我通过 Visual Studio 生成了类型。

顺便提一下 import ToggleButton from 'react-toggle-button'; 错误 :/ClientApp/types/react-toggle-button"' 没有默认导出。

所以,我是这样导入的:

import * as ToggleButton from 'react-toggle-button';


 <ToggleButton
                        value={this.state.influencer.billingVATPayer || false}
                        onChange={(e: any) => { console.log(e) }}
                    />

我的错误: (TS) JSX 元素类型 'index' 不是 JSX 元素的构造函数。类型 'index' 中缺少属性 'context'。

没有 TypeScript 的模块可以以某种方式被导入吗?

我的 Typescript 版本:3.2.4 我的 React 版本:16.7.0

提前感谢

答案#1

有时,某些包有一个“@types/”版本,你可以安装它而不是普通版本,这个版本包含你需要/想要导入的项目的类型(例如 https://www.npmjs.com/package/@types/react)。在无法使用这种方式的情况下,你可以选择以下方式之一:

A) 创建你自己的 .d.ts 文件,并为你尝试导入的包创建你自己的类型,就像 @hazardous 提到的那样。

或者你可以

B) 编辑你的 tsconfig.json 文件,添加属性 "allowJs" 并将其设置为 true,这允许在不引发 linter 或编译器警告的情况下将 JS 文件导入到 Typescript 文件中。这在大型代码库(甚至小型代码库)向 Typescript 过渡时特别有用,而无法立即将所有文件/组件转换为 Typescript。特别感谢 @Juraj Kocan 的提及。