【入門編】 tsconfig.jsonの役割と基本構造 – TypeScript実践ガイド

こんにちは。フロントエンドの現場で長年コードを書き続けていると、たまに「TypeScriptって、なんだか厳しくて怖い……」と感じている新人エンジニアさんに出会います。

でも、安心してください。TypeScriptは、あなたの書いたコードを「もっと安全に、もっと健やかに」育てるための頼もしいパートナーです。そのパートナーと最初に取り交わす契約書、それが `tsconfig.json` です。

今日は、この設定ファイルの正体を、難しい専門用語を使わずに紐解いていきましょう。

—

`tsconfig.json` は「理想の生活ルール」

いきなりですが、あなたの部屋を想像してみてください。
「服はクローゼットにしまう」「ゴミはゴミ箱へ」「夜12時以降は静かにする」……こういったルールがあるからこそ、心地よい生活が送れますよね。

`tsconfig.json` は、まさにTypeScriptというプログラミング言語に対して、「このプロジェクトでは、こうやって振る舞ってね」と伝えるルールブックです。

もしこのファイルがないと、TypeScriptは「どこまで厳しくチェックしていいの?」「どのバージョンのJavaScriptに変換すればいいの?」と迷子になってしまいます。だから、プロジェクトの始まりには必ずこの「契約書」が必要なんです。

—

最小限の「契約内容」を見てみよう

まずは、これさえあれば最低限動くという、シンプルで愛らしい設定を見てみましょう。

{
“compilerOptions”: {
// どのバージョンのJavaScriptに変換するか(ES6やESNextが一般的)
“target”: “ESNext”,
// モジュールをどう読み込むかの設定(モダンな開発ならこれが標準)
“module”: “ESNext”,
// TypeScriptが厳しくチェックしてくれるモードをONにする(超重要!)
“strict”: true
},
// 「どのファイルを変換対象にするか」を指定する場所
“include”: [“src//”]
}

この設定のポイントを「お買い物」に例えると…

  • `compilerOptions`(買い物のメモ): 「今日のお買い物リスト」です。冷蔵庫の中身(コード)をどう料理するか(変換するか)の指示書ですね。「なるべく新鮮な食材(最新のJavaScript)で料理してね」といった指定をここで行います。
  • `strict: true`(お母さんの愛情): これ、本当に大切です。これを `true` にすると、TypeScriptが「あ、ここデータが空っぽになる可能性があるよ! 気をつけて!」と、お母さんのように細かく注意してくれます。最初は「うるさいな」と思うかもしれませんが、これがあるおかげで、後から大きなトラブル(バグ)を未然に防げるんです。
  • `include`(冷蔵庫の場所): 「srcフォルダの中にある食材を全部チェックしてね」と伝えています。ここを指定しないと、TypeScriptはどこを見ていいか分からず、せっかく書いたコードを無視してしまいます。

—

つまずきやすいポイント:設定は「一生固定」じゃない

初学者の皆さんがよく悩むのが、「最初から完璧な設定にしなきゃいけないの?」という不安です。

大丈夫です。そんなことはありません。

実際、現場のプロジェクトでも、最初は最低限の設定からスタートして、開発が進むにつれて「もう少し厳しくチェックしようか」「最新の機能を許可しようか」と、ルールを書き換えていくことは日常茶飯事です。

`tsconfig.json` は、あなたの成長とともに育てていく生き物です。最初から全てを理解しようとせず、「今はこれが動けばOK!」くらいの軽い気持ちで始めてみてください。

—

まとめ:怖がらずに、まずは書いてみよう

TypeScriptの環境構築で手が止まってしまうのは、設定が「正解か不正解か」を気にしすぎるからかもしれません。でも、TypeScriptはあなたの敵ではなく、「ミスを減らして、開発を楽にするための魔法」をかけてくれる存在です。

まずは上記のコードをエディタに貼り付けて、`src` フォルダの中に適当なファイルを作ってみてください。エラーが出たら、それはTypeScriptがあなたに「ここ、こう書くと良くなるよ!」とアドバイスをくれているサインです。

その対話を繰り返していくうちに、いつの間にかあなたは、TypeScriptを自在に操る職人になっているはずですよ。

それでは、良いコーディングライフを!何か分からないことがあれば、いつでもまた聞きに来てくださいね。

コメント

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