【入門編】 includeとexcludeの設定 – TypeScript実践ガイド

こんにちは。TypeScriptの世界へようこそ!
現場でTypeScriptを触っていると、「型が合わない!」と頭を抱えることもありますが、それを解決した時の快感は格別です。

今日は、TypeScriptの「心臓部」とも言える設定ファイル、`tsconfig.json`の中でも、特に初学者が「あれ?なんで動かないの?」とつまづきやすい`include`と`exclude`についてお話ししますね。

難しく考える必要はありません。一緒に、身近な例え話から紐解いていきましょう。

—

TypeScriptの「お片付けルール」:includeとexclude

TypeScriptをプロジェクトに導入すると、フォルダの中にはたくさんのファイルが並びます。でも、TypeScriptのコンパイラ(型をチェックしてくれる機械)に「全部のファイルをチェックして!」と頼むと、とんでもないことになります。

例えば、「node_modules(外部から持ってきた膨大なライブラリ)」や「dist(完成したプログラムの置き場)」までチェックさせてしまうと、コンパイラはパンクしてしまいます。

そこで登場するのが、`include`と`exclude`という「お片付けルール」です。

1. include:メインの作業場を教える

`include`は、「ここにあるファイルをTypeScriptの対象にしてね!」という「作業エリア」の指定です。

お買い物に例えるなら、冷蔵庫の中身を整理するときに「野菜室の食材だけをチェックして!」と決めるようなものですね。

{
“compilerOptions”: {
// 省略:ここでは細かい設定をします
},
// ここで「どのフォルダを監視するか」を指定します
“include”: [
“src//”
// 「srcフォルダの中にある、すべての階層のすべてのファイル」という意味です
]
}

`/` という記号が出てきてドキッとしたかもしれませんが、これは「フォルダの階層がどれだけ深くなっても、中のファイルを全部含めてね」という魔法の呪文だと思ってください。

2. exclude:邪魔なやつを除外する

`exclude`は、「これだけは無視してくれ!」という「NGリスト」です。

`include`で「srcフォルダ全部!」と指定しても、その中に「どうしてもチェックしてほしくない設定ファイル」や「テスト用のゴミデータ」が混ざることもありますよね。そんなとき、このリストに名前を書くだけで、コンパイラは見て見ぬふりをしてくれます。

{
“include”: [“src//”],
“exclude”: [
“node_modules”, // 外部ライブラリはチェックしなくてOK
“/.spec.ts”, // テスト用のファイルは無視して!
“dist” // 変換後のファイルはチェック対象外!
]
}

—

よくある「落とし穴」とその対処法

現場でよくあるのが、「ファイルを新しく作ったのに、TypeScriptがエラーを教えてくれない!」というケースです。

大抵の場合、原因はこの2つです。

1. `include`の設定範囲外に作っている

  • プロジェクトのルート(一番上の階層)にファイルを置いたのに、`include`が `src//` になっていると、TypeScriptはそもそもそのファイルを見てくれません。

2. `exclude`で誤って除外している

  • 「なぜか型チェックが効かない…」と悩んでいたら、実は`exclude`の設定で、そのファイルが含まれるフォルダを丸ごと除外していた、なんてことはベテランでもたまにやります(笑)。

もし迷ったら…

最初は、以下のような設定から始めるのが一番シンプルで安全ですよ。

{
“compilerOptions”: {
“target”: “es2020”,
“module”: “commonjs”,
“strict”: true // 厳しめに設定すると、後の自分が楽になります!
},
“include”: [“src”], // 「srcの中身を全部見て!」
“exclude”: [“node_modules”] // 「ライブラリだけは除外!」
}

—

最後に:完璧を目指さなくて大丈夫

TypeScriptの環境構築は、最初から完璧を目指す必要はありません。

最初は「なんか変だな?」と思ったら`include`を広げてみて、コンパイルが遅くなったりエラーが爆発したりしたら、`exclude`で少しずつ掃除していく。この「行ったり来たり」を繰り返すのが、一番の近道です。

何か分からないことがあっても、それはあなたが「より良いコードを書こう」と向き合っている証拠です。大丈夫、少しずつ慣れていきましょうね。

もし壁にぶつかったら、またいつでもここに戻ってきてください。応援しています!

コメント

タイトルとURLをコピーしました