【入門編】 compilerOptions.moduleの設定 – TypeScript実践ガイド

やあ。TypeScriptの世界へようこそ。
初めてこの言語に触れるとき、`tsconfig.json`という設定ファイルに出会って「うわっ、なんだこの呪文みたいな設定は…」とブラウザを閉じそうになった経験、誰にでもあるはずだよ。大丈夫、君だけじゃない。

今日は、その中でも特に「これを選べばいいの? それともあれ?」と迷いやすい `compilerOptions.module` について、肩の力を抜いてお話ししようと思う。

—

TypeScriptの「モジュール」って、そもそも何者?

まず、「モジュール」という言葉を難しく考えすぎないでほしい。
例えば、君が料理をしているとしよう。冷蔵庫から「野菜」「お肉」「調味料」をバラバラに取り出すんじゃなくて、あらかじめ切って袋詰めされた「カレー用野菜パック」みたいなものがあるよね。

プログラミングにおけるモジュールも同じ。「関連する機能やデータを一つの箱にまとめて、必要なときに必要な場所へ呼び出せるようにしたもの」のことだ。

TypeScriptを書いていると、この「箱」をどういう形式で包んで外に届けるかを指定しなきゃいけない。それが `compilerOptions.module` の正体なんだ。

「配送業者」を選ぶイメージで考えてみよう

この設定は、言ってみれば「作った荷物を、どの配送業者に運ばせるか」を決めるようなものだよ。

  • CommonJS (`”commonjs”`): 昔ながらの信頼できる「おじいちゃんがやってる郵便局」。Node.jsというサーバーサイドの世界では、これが標準だね。
  • ES6 / ESNext (`”esnext”`): 最近の主流。「最新鋭の高速配送サービス」。今のモダンなWebブラウザや、React/Vueなどのフレームワークで最も好まれる形式だ。
  • UMD (`”umd”`): 「どこでも届けるよ!」という欲張りな業者。古い環境でも新しい環境でも動くように工夫されているけれど、その分少し重たい。

初学者がまず選ぶべき「たった一つの正解」

もし君が、今流行りのReactやVue、あるいはNext.jsのようなツールを使ってWebサイトを作ろうとしているなら、悩む必要はないよ。

{
“compilerOptions”: {
“module”: “esnext”
}
}

これだけでOKだ。「今のブラウザは最新の荷物受け取りに対応しているから、一番効率の良い業者を使ってね」という指示になる。迷ったら `esnext`、これが今の現場のスタンダードだ。

もし、Node.jsで動く簡単なツールを作っているなら、`”commonjs”` を選ぶのが無難だね。

実際にコードで見てみよう

例えば、君が「挨拶をする機能」を別のファイルに切り出したとしよう。

greeting.ts (部品を作る)

// 外から呼べるように「export」をつけるのがモジュールのルール
export const sayHello = (name: string): string => {
return `こんにちは、${name}さん!`;
};

main.ts (部品を呼び出す)

import { sayHello } from ‘./greeting’;

// コンソールに表示してみる
console.log(sayHello(“TypeScript学習者”));

TypeScriptは、このコードをJavaScriptに変換するときに、設定ファイル(`tsconfig.json`)の `module` 設定を見て、相手(ブラウザやNode.js)が理解できる「梱包の仕方」に書き換えてくれるんだ。

つまずきそうなポイントへのフォロー

ときどき、「設定を変えたのに動かない!」という悲鳴を聞くことがある。それは、「JavaScriptの受け入れ体制」と「TypeScriptの梱包方法」が噛み合っていないからだ。

例えば、最新のブラウザは `esnext` という梱包は得意だけど、古いブラウザや特定の古いNode.jsは、その梱包を開ける方法を知らないことがある。

もしエラーが出たら、一度深呼吸をしてこう考えてみて。
「この荷物を開けるのは誰だろう?(ブラウザ? サーバー?)」
そして、その相手が一番得意な「配送業者(module設定)」を選んであげるだけで、パズルのピースがカチッとはまるように解決することが多いんだ。

—

最後に:完璧を目指さなくていい

最初は `tsconfig.json` の設定なんて、呪文に見えて当たり前だよ。僕だって、初めて触ったときは「なんでこんなに細かいんだ!」と頭を抱えたものさ。

でも、一度この「配送業者のイメージ」を掴んでしまえば、あとは現場の状況に合わせて切り替えるだけ。君の書いたコードが、世界中のブラウザで軽やかに動く姿を想像してみてほしい。

これからも、一つずつ紐解いていこう。君のTypeScriptライフが、今日より少しだけ楽しくなることを祈っているよ。何か詰まったら、またいつでも聞いてね。

コメント

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