我试图从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


当前回答

比如这个:

{
  "name": "some-package",
  "version": "X.Y.Z",
  "description": "Yada yada yada",
  "main": "./index.js",
  
  "typings": "./index.d.ts",
  
  "repository": "https://github.com/yadayada.git",
  "author": "John Doe",
  "license": "MIT",
  "private": true
}

此外,如果您试图使用的包有自己的类型文件,并且在包中列出了它,则此错误将得到修复。Json类型属性

其他回答

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

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

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

声明文件发布

我可以如何贡献

我所做的是在项目文件夹目录下从nodejs命令提示符中运行以下命令:

npm init 安装-g webpack NPM install——save react react-dom @types/react @types/react-dom NPM install——保存-dev typescript awesome-typescript-loader source-map-loader NPM安装ajv@^6.0.0 NPM I react-html-id import UniqueId from 'react-html-id';

我做了上面的(虽然我已经安装了npm),它工作!

可能在某些情况下,某些依赖项没有类型,ts会强制您为此包含类型。有一种变通方法可以解决这个问题,那就是使用javascript。

e.g.

import {Charts} from "react-charts";//error:无法找到模块'react-charts'的声明文件。

const ReactChart = require("react-charts");/ /没有错误

尝试添加到tsconfig。"noImplicitAny": false 为我工作

只要为react安装必要的类型,它就应该解决这个错误。

如果你用的是纱线:

yarn add @types/react @types/react-dom @types/react-router-dom -D

如果你正在使用npm:

npm install @types/react @types/react-dom @types/react-router-dom --save-dev