search
LoginSignup
20

More than 1 year has passed since last update.

posted at

【TypeScript】【React】Could not find a declaration file for module ‘react’.の対処について

はじめに

import * as React from ‘react’;

Projectディレクトリ内のReactを読み込んでいるところ全てで、

Could not find a declaration file for module ‘react’. ‘/Users/username/projects/project-name/node_modules/react/index.js’ implicitly has an ‘any’ type.
If the ‘react’ package actually exposes this module, consider sending a pull request to amend ’https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/type

というエラーが表示されるようになった。

"noImplicitAny": false は違うのではないか、、

エラーのキーワードで調べてみると、

tsconfig.jsonに、

“noImplicitAny”: false,

を追加する、という方法が見つかったが、ちょっと怪しいと感じた為、検索してみると、

TypeScriptでこれは設定しとけっていうコンパイラーオプション(noImplicitAnyオプション)

こちらの記事に、すごくわかりやすく書いて下さっていました。ありがとうございます。

 TSでは型定義がない変数はany型になってしまいます(暗黙のany型)。それを禁止します。

自分の場合、今のTypeScript学習段階では、any型をスルーしてしまうと型の理解に繋がらないのでアウトだと思いました。

原因・対処

reactは typescriptで書かれてない上、型提供も元パッケージでしていないので型を別でインストールする必要がありました。

yarn add -D @types/react

これで、型をインストールする。

型情報は、リリース時のパッケージには含める必要がないので
-Dオプションをつけて、devDependencies にインストールする。

これで、すべてのエラーが消えた。

devDependencies:開発用の依存関係。開発ワークフローのどこかで必要で、コードの実行時には必要のない依存関係.

終わりに。

最後まで読んで頂きありがとうございます:bow_tone1:
転職の為、未経験の状態からReact,TypeScriript,Docker,Rails等を学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
20