【问题标题】:Typescript: Could not find a declaration file for module 'react-cards'打字稿:找不到模块'react-cards'的声明文件
【发布时间】:2018-11-06 10:14:49
【问题描述】:

我对 ReactJS 完全陌生,我发现自己陷入了下一件事。 我已经通过 npm 安装了 react-cards,如下所示:

npm install --save react-cards

安装没问题,我想像这样在我的代码中导入它:

import Card from 'react-cards';

但后来我说这个错误:

找不到模块“react-cards”的声明文件:“路径”隐含地具有“任何”类型。如果存在,请尝试“npm install @types/react-cards”或添加包含“declare module 'react-cards';”的新声明(.d.ts)文件。

我已尝试使用 npm install @types/react-cards 但没有任何改变。

我不知道该怎么办。

【问题讨论】:

标签: javascript typescript


【解决方案1】:

您正在导入一个缺少 type 信息的 npm 包。

在您的示例中,TypeScript 在导入时不理解 Card 的属性。 TypeScript 无法检测类型并引用any,这实质上意味着无类型。

对于许多无类型的包,有@types npm 包可以为你添加这些类型。你可以在这里找到它们:microsoft.github.io/TypeSearch

很遗憾,没有@types/react-card 包,但您可以选择:

  1. 您可以自己编写react-cards的打字信息,并将其保存到react-cards.d.ts文件中。

  2. 通过设置"noImplicitAny": false 禁用tsconfig.json 中的警告 - 参考:https://www.typescriptlang.org/docs/handbook/compiler-options.html

更多信息:typescript github thread "Importing untyped JS modules"

【讨论】:

  • 所以基本上如果我理解你的话,我决定使用一个我无法使用的包。如果我执行第 2 步,那么接下来的 2 行将出现错误: import React from 'react';从“react-dom”导入 ReactDom;抱歉,但我在使用代码标签时遇到了困难:)
  • 我想这将是一个新问题:)
  • 我唯一可以尝试的就是你提到的第一件事,但由于我是 React/Javascript/Typescript 新手,我真的不知道该怎么做。
  • 你安装了@types/react 和@types/react-dom 吗?
  • 我现在在看另一部电影。我回家后看看。
【解决方案2】:

如果您使用的是 VS Code,有一个快速修复建议,您可以使用 Ctrl + .

调用

您也可以像这样使用 typesync automatically add all missing types

npx typesync

如果包没有自己的类型,并且尚未添加到DefinitelyTyped,则需要add a new definitions file

进一步阅读

【讨论】:

  • 这是为我做的。手动安装不起作用,但让 VS Code 自动安装它工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-09-20
  • 2019-01-07
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 2019-03-16
  • 2019-07-26
  • 2021-02-21
相关资源
最近更新 更多