`yarn add react-router-dom` 和 `yarn add @types/react-router-dom` 有什么区别?

What's the difference between `yarn add react-router-dom` and `yarn add @types/react-router-dom`?

正在做

yarn add react-router-dom

失败。该应用程序在启动时抛出错误,Intellij 将来自 react-router-dom 的导入标记为错误。但是做

yarn add @types/react-router-dom

有效。

我找到的所有示例,除了一个显示第一个 yarn add... 命令的示例。这是 react-router-dom 的新内容吗?

如果有什么不同的话,我正在使用打字稿。

===编辑===

这是错误信息。这是我找到解决方案的地方。

/home/dean/src/react/projects/room-reservations-ui_/src/App.tsx
TypeScript error in /home/dean/src/react/projects/room-reservations-ui_/src/App.tsx(5,29):
Could not find a declaration file for module 'react-router-dom'. '/home/dean/src/react/projects/room-reservations-ui_/node_modules/react-router-dom/index.js' implicitly has an 'any' type.
  Try `npm i --save-dev @types/react-router-dom` if it exists or add a new declaration (.d.ts) file containing `declare module 'react-router-dom';`  TS7016

    3 | import './App.css';
    4 | import Navbar from "./components/Navbar";
  > 5 | import {BrowserRouter} from "react-router-dom";
      |                             ^
    6 | 
    7 | function App() {
    8 |   return (

简单地说,@types/react-router-dom包含类型定义。它旨在与打字稿一起使用。你可以看到更多关于这个 here.

yarn add react-router-dom

这是安装 react-router-dom,没有任何类型,如果您尝试仅使用此包启动您的应用程序,您将看到收到的消息

Could not find a declaration file for module 'react-router-dom'.

这并不意味着 react-router-dom 有错误,但 Typescript 没有为它声明的类型,该项目可能是用 Javascript 制作的,或者类型声明在其他地方。

yarn add @types/react-router-dom

这将从 DefinitelyTyped(https://github.com/DefinitelyTyped/DefinitelyTyped) 安装 react-router-dom 的类型,这是一个进行声明的存储库,因此我们可以为仅为Javascript,但其他人为我们“打字”了。

@types/

这个前缀是一个组织,它会引用 DefinitelyTyped 存储库中的 react-router-dom 包,它不包含 react-router-dom 代码,只有类型定义,你可以在这里看到 https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react-router-dom

它只包含声明,当 Typescript 找不到您正在使用的模块的声明时,它将无法正确显示类型,因此会给出警告

我遇到了同样的问题。刚刚从具有类型的节点模块中删除 rrd 并再次安装它