我试图从react-materialize导入组件

import {Navbar, NavItem} from 'react-materialize';

但是当webpack编译我的.tsx时,它会为上面的-抛出一个错误

ERROR in ./src/common/navbar.tsx
(3,31): error TS7016: Could not find a declaration file for module 'react-materi
alize'. 'D:\Private\Works\Typescript\QuickReact\node_modules\react-materialize\l
ib\index.js' implicitly has an 'any' type.

有什么解决办法吗?我不确定如何解析此导入语句以使用ts-loader和webpack。

react-materialize的index.js是这样的。但是我如何解决这个模块导入在我自己的文件?

https://github.com/react-materialize/react-materialize/blob/master/src/index.js


当前回答

对于那些想知道我是如何克服这些的人。我做了一些hack的东西。

在我的项目中,我创建了一个名为@types的文件夹,并将其添加到tsconfig中。Json来找到所有需要的类型。所以它看起来像这样

"typeRoots": [
  "../node_modules/@types",
  "../@types"
]

在里面我创建了一个名为alltypes。d。ts的文件。从中找出未知类型。所以对我来说,这些是未知的类型,我把它加在那里。

declare module 'react-materialize';
declare module 'react-router';
declare module 'flux';

现在typescript不再抱怨找不到类型了。现在是双赢的局面:)

其他回答

当我使用typescript添加react-router-dom到新的CRA应用程序时,我有这个问题。在我添加@types/react-router后,这个问题得到了修复。

在我的情况下,我有一个react的问题,所以我开始做:

NPM install @types/react

然后是

NPM install @types/react-dom

这对我很有效

如果你正在使用的模块没有@types/<package>,你可以通过在上面添加// @ts-ignore注释来轻松规避这个问题。

// @ts-ignore
import { Navbar, NavItem } from 'react-materialize';

或者你也可以创建下面缺少的@types/<package>:

声明文件发布

我可以如何贡献

我费了好大劲才拿到的 在react应用中 会有一个react-app-env.d。SRC文件夹下的Ts文件 只要在这里声明模块

/// <reference types="react-scripts" />
declare module 'react-color/lib/components/alpha/AlphaPointer'

对于我的情况,问题是类型没有被添加到包。为了修复它,我运行了npm install——save-dev @types/react-redux,注意——save-dev