簡體   English   中英

我是否需要安裝 @types/react 才能在 TypeScript 項目中使用 React?

[英]Do I need to install @types/react to work with React in a TypeScript project?

我正在將我的項目從 JavaScript 轉換為 TypeScript。

這是我當前的package.json依賴項:

  "devDependencies": {
    "@babel/cli": "^7.10.5",
    "@babel/core": "^7.10.5",
    "@babel/node": "^7.10.5",
    "@babel/preset-env": "^7.10.4",
    "@babel/preset-react": "^7.10.4",
    "@babel/preset-typescript": "^7.10.4",
    "babel-loader": "^8.1.0",
    "babel-plugin-module-resolver": "^4.0.0",
    "babel-plugin-styled-components": "^1.10.7",
    "clean-webpack-plugin": "^3.0.0",
    "dotenv-webpack": "^2.0.0",
    "file-loader": "^6.0.0",
    "html-webpack-plugin": "^4.3.0",
    "ngrok": "^3.2.7",
    "rimraf": "^3.0.2",
    "webpack": "^4.44.0",
    "webpack-cli": "^3.3.12",
    "webpack-dev-server": "^3.11.0"
  },
  "dependencies": {
    "@hot-loader/react-dom": "^16.13.0",
    "core-js": "^3.6.5",
    "firebase": "^7.17.1",
    "md5": "^2.2.1",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-helmet": "^6.1.0",
    "react-hot-loader": "^4.12.21",
    "react-redux": "^7.2.1",
    "react-router-dom": "^5.2.0",
    "redux": "^4.0.5",
    "regenerator-runtime": "^0.13.7",
    "styled-components": "^5.1.1",
    "uuid-v4": "^0.1.0"
  }
}

我已經導入了reactreact-dom ,但收到以下警告:

找不到模塊“反應”的聲明文件。 嘗試npm install @types/react (如果它存在)或添加一個包含 `declare module 的新聲明(.d.ts)文件

react-dom也一樣

找不到模塊“react-dom”的聲明文件。 嘗試npm install @types/react-dom如果它存在或添加一個包含`declare module 的新聲明(.d.ts)文件

事實上,到目前為止我導入的所有庫都給我同樣的警告:

索引.tsx

import React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter as Router} from 'react-router-dom';
import { Provider } from 'react-redux';

我是否需要安裝那些@types/react才能與 TypeScript 一起使用 React? 我還需要為我導入的每個庫安裝@types/package嗎? 這是如何運作的?

是的。 或者,更詳細地說,要使用帶有 TypeScript 的 JS 庫,您需要

  • 使用自己提供 TS 類型的庫(如今很多人這樣做),或者
  • 安裝相關的@types/ package(源於DefinitelyTyped ); 在這里吹響我自己的號角,我寫了一個package 可以幫助的自動類型,或者
  • 在項目的 working cop 中為庫編寫一個.d.ts文件,如下所示:
declare module 'some-library' {
  export const doInterestingThings(): void;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM