【入門編】 libプロパティによる組み込み型定義の制御 – TypeScript実践ガイド

TypeScriptの「lib」設定は、あなたの開発環境という「道具箱」を整理する魔法です

こんにちは!TypeScriptの世界へようこそ。
新しい技術を学び始めるとき、最初にぶつかるのが`tsconfig.json`という設定ファイルですよね。「オプションが多すぎて、どれを触ればいいのか分からない…」と頭を抱えてしまう気持ち、痛いほどよくわかります。

今日は、その中でも特に重要で、かつ「これを知っているだけで開発が劇的に楽になる」`lib`プロパティについて、じっくりお話ししましょう。

—

「lib」って一体なに?——身近な「道具箱」で例えてみよう

突然ですが、あなたは今から「手芸」を始めようとしています。
でも、裁縫セットの中に、なぜか「溶接機」や「重機を動かす免許証」が入っていたらどう思いますか?「邪魔だな、裁縫には関係ないのに」と感じますよね。

TypeScriptにおける`lib`設定は、まさに「あなたの開発という作業に必要な道具だけを、道具箱に入れる」ための設定なんです。

TypeScriptは、何も設定しないと「ブラウザで動く機能(DOM)」も「Node.jsで動く機能」も、全部ひっくるめて「何でも知ってるよ!」という状態になります。でも、もしあなたが「ブラウザで動くWebサイト」だけを作りたいなら、Node.jsの知識(サーバー側の機能)は道具箱から出しておいたほうが、頭の中がスッキリしますよね。

この「道具箱の中身を自分で選ぶ」のが`lib`の役割です。

—

なぜ「lib」をわざわざ設定するの?

「全部入れておけば、どこでも動くから楽じゃないの?」と思うかもしれません。しかし、これには2つの大きな落とし穴があります。

1. 「本当は使えない機能」を「使える」と勘違いしてしまう
例えば、ブラウザ専用の`window`オブジェクト(画面を操作する機能)を、サーバー側のプログラムでうっかり使ってしまったとします。`lib`の設定が適当だと、TypeScriptは「いいよ、それ使って!」とエラーを出してくれません。結果、実際に動かした時に「そんな機能はない!」と真っ赤なエラー画面が出てしまうのです。
2. 道具箱が重すぎて、エディタがフリーズする
TypeScriptは常に裏側で「今のコード、間違ってないかな?」と監視しています。不要な機能まで読み込んでいると、エディタがその重たい辞書をいちいちめくる必要があり、結果として動作が遅くなります。

—

さっそく「lib」を設定してみよう

`tsconfig.json`を開いてみてください。以下のように`lib`という項目を追加します。

{
“compilerOptions”: {
“target”: “ESNext”,
// ここで「何が使える環境なのか」を定義します!
“lib”: [
“ESNext”, // 最新のJavaScriptの機能を使います
“DOM”, // ブラウザで動くWebサイトを作ります
“DOM.Iterable” // 画面の要素をループして回る処理を使います
]
}
}

設定のポイント:

  • “ESNext”: 今のJavaScriptで一番新しい書き方に対応させるための「辞書」です。
  • “DOM”: `document.getElementById`や`alert()`など、ブラウザでおなじみの機能を使えるようにする「お守り」です。
  • “DOM.Iterable”: 画面上の要素を「リストとして扱う」ときには、これが必要になります。現代のフロントエンド開発では、ほぼセットで入れてOKです。

—

つまずきやすいポイント:もしNode.jsで開発するなら?

もしあなたが「Webサイト」ではなく「サーバー側のプログラム」を書くなら、`DOM`を入れる必要はありません。その代わり、`node`という型定義パッケージ(`@types/node`)を入れるのが一般的です。

「DOMがないと、`window`を使おうとした時にちゃんとエラーが出るようになる」——これこそがTypeScriptがあなたを守ってくれている瞬間です。「あ、これブラウザ専用の機能だったんだ!」と気づくことが、プロへの第一歩ですよ。

—

最後に:怖がらなくて大丈夫です

最初は「何を選べばいいかわからない!」と不安になるかもしれません。でも大丈夫。まずは上記のサンプルコードのように`[“ESNext”, “DOM”, “DOM.Iterable”]`を入れておけば、現代的なWeb開発の現場で困ることはまずありません。

開発が慣れてきたら、少しずつ「今のプロジェクトには何が必要かな?」と道具箱の中身を見直してみてください。自分の手で環境をコントロールできるようになると、TypeScriptはもっともっと頼もしい相棒になります。

今日もあなたのコードが、エラーなくスッキリ動くことを祈っています!何かあれば、いつでも聞きに来てくださいね。

コメント

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