カテゴリ: TypeScript 更新日: 2026/02/08

TypeScriptのtargetとmoduleの違いを徹底解説!初心者でもわかるコンパイル設定

TypeScriptの`target`と`module`の違いと設定例
TypeScriptの`target`と`module`の違いと設定例

先生と生徒の会話形式で理解しよう

生徒

「TypeScriptの設定ファイルで、targetとmoduleっていう項目がありますけど、これって何が違うんですか?」

先生

「どちらもTypeScriptをJavaScriptに変換する際の設定ですが、targetはJavaScriptのバージョンを、moduleはモジュールシステムの形式を決めるものなんです。」

生徒

「具体的にはどう設定すればいいんですか?」

先生

「それでは、それぞれの役割と設定方法を詳しく見ていきましょう!」

1. TypeScriptのコンパイルとは?

1. TypeScriptのコンパイルとは?
1. TypeScriptのコンパイルとは?

TypeScriptは、ブラウザやNode.jsで直接実行することができません。そのため、TypeScriptで書いたコードを、JavaScriptに変換する必要があります。この変換作業のことをコンパイルと呼びます。

例えるなら、日本語で書いた手紙を英語に翻訳するようなものです。TypeScript(日本語)をJavaScript(英語)に翻訳して、初めてコンピュータが理解できるようになります。

このコンパイルの設定を管理するのがtsconfig.jsonという設定ファイルです。その中でも特に重要なのが、targetmoduleという二つの設定項目になります。

2. targetオプションとは?

2. targetオプションとは?
2. targetオプションとは?

targetは、TypeScriptをコンパイルした結果、どのバージョンのJavaScriptに変換するかを指定する設定です。

JavaScriptには、ES5、ES6(ES2015)、ES2016、ES2017、ESNextなど、複数のバージョンがあります。新しいバージョンほど便利な機能が使えますが、古いブラウザでは動かない可能性があります。

例えば、アロー関数やクラスといった機能は、ES6以降で使えるようになりました。もし古いブラウザでも動作させたい場合は、targetをES5に設定して、新しい機能を古い書き方に変換してもらう必要があります。

targetの設定例

tsconfig.jsonファイルで、以下のように設定します。


{
  "compilerOptions": {
    "target": "ES5"
  }
}

この設定により、TypeScriptのコードは、ES5バージョンのJavaScriptに変換されます。

実際のコンパイル結果の違い

例えば、次のようなTypeScriptコードがあったとします。


const greet = (name: string) => {
  console.log(`こんにちは、${name}さん!`);
};

target: ES5に設定した場合、次のようなJavaScriptに変換されます。


var greet = function (name) {
  console.log("こんにちは、" + name + "さん!");
};

target: ES6に設定した場合、次のようなJavaScriptに変換されます。


const greet = (name) => {
  console.log(`こんにちは、${name}さん!`);
};

ES5では、アロー関数が通常の関数に、テンプレート文字列が文字列連結に変換されていることがわかります。

3. moduleオプションとは?

3. moduleオプションとは?
3. moduleオプションとは?

moduleは、コンパイル後のJavaScriptで、どのモジュールシステムを使うかを指定する設定です。

モジュールシステムとは、プログラムを複数のファイルに分けて管理し、それらを連携させる仕組みのことです。例えば、計算機能を持つファイルと、画面表示機能を持つファイルを分けて作成し、必要に応じて読み込んで使うことができます。

JavaScriptには、CommonJS、ES6(ESModule)、AMD、UMDなど、いくつかのモジュールシステムがあります。環境によって使えるシステムが異なるため、適切なものを選ぶ必要があります。

主なモジュールシステムの種類

  • CommonJS:Node.jsで使われる伝統的なモジュールシステムです。
  • ES6(ESModule):最新のJavaScript標準のモジュールシステムです。
  • AMD:ブラウザで非同期読み込みをするためのシステムです。
  • UMD:CommonJSとAMDの両方に対応した形式です。

moduleの設定例

Node.jsで使う場合は、次のように設定します。


{
  "compilerOptions": {
    "module": "CommonJS"
  }
}

最新のブラウザやモダンな環境で使う場合は、次のように設定します。


{
  "compilerOptions": {
    "module": "ES6"
  }
}

実際のコンパイル結果の違い

次のようなTypeScriptコードがあったとします。


export const message = "こんにちは";

module: CommonJSに設定した場合、次のようなJavaScriptに変換されます。


exports.message = "こんにちは";

module: ES6に設定した場合、次のようなJavaScriptに変換されます。


export const message = "こんにちは";

CommonJSでは、exportsというキーワードを使ってモジュールを公開しますが、ES6ではexportというキーワードを使います。

4. targetとmoduleの違いを整理

4. targetとmoduleの違いを整理
4. targetとmoduleの違いを整理

ここまでの内容を整理すると、次のようになります。

設定項目 役割 主な設定値
target JavaScriptのバージョンを指定 ES5、ES6、ES2015、ES2020、ESNext
module モジュールシステムの形式を指定 CommonJS、ES6、AMD、UMD

targetは「どの時代のJavaScriptに変換するか」を決め、moduleは「どのようにファイルを連携させるか」を決めるものです。この二つは独立した設定なので、組み合わせて使うことができます。

5. 実際の設定例とおすすめの組み合わせ

5. 実際の設定例とおすすめの組み合わせ
5. 実際の設定例とおすすめの組み合わせ

Node.jsで開発する場合

Node.jsでサーバーサイドのプログラムを作る場合は、次のような設定がおすすめです。


{
  "compilerOptions": {
    "target": "ES2020",
    "module": "CommonJS"
  }
}

Node.jsは比較的新しいバージョンのJavaScriptに対応しているため、targetはES2020に設定します。モジュールシステムは、Node.jsの標準であるCommonJSを使います。

モダンなブラウザで使う場合

最新のブラウザをターゲットにする場合は、次のような設定がおすすめです。


{
  "compilerOptions": {
    "target": "ES6",
    "module": "ES6"
  }
}

最新のブラウザはES6の機能をサポートしているため、targetmoduleの両方をES6に設定します。これにより、コンパイル後のコードもシンプルで読みやすくなります。

古いブラウザにも対応する場合

Internet Explorer などの古いブラウザにも対応する必要がある場合は、次のような設定を使います。


{
  "compilerOptions": {
    "target": "ES5",
    "module": "UMD"
  }
}

targetをES5にすることで、古いブラウザでも動作する互換性の高いコードに変換されます。moduleをUMDにすることで、さまざまな環境で使えるモジュール形式になります。

6. tsconfig.jsonファイルの作り方

6. tsconfig.jsonファイルの作り方
6. tsconfig.jsonファイルの作り方

設定ファイルであるtsconfig.jsonは、プロジェクトのルートディレクトリに配置します。ファイルがない場合は、手動で作成するか、次のコマンドで自動生成できます。


tsc --init

このコマンドを実行すると、デフォルトの設定が記載されたtsconfig.jsonファイルが作成されます。その後、必要に応じてtargetmoduleを変更して使います。

完全な設定ファイルの例

実際のプロジェクトでは、次のような設定ファイルを使うことが多いです。


{
  "compilerOptions": {
    "target": "ES2020",
    "module": "CommonJS",
    "strict": true,
    "outDir": "./dist",
    "rootDir": "./src"
  }
}

strictは型チェックを厳格にする設定、outDirはコンパイル後のファイルを出力するフォルダ、rootDirはソースコードが置かれているフォルダを指定します。

7. よくある間違いと注意点

7. よくある間違いと注意点
7. よくある間違いと注意点

targetとmoduleの組み合わせに注意

targetmoduleは、組み合わせによっては意図しない動作をすることがあります。例えば、targetをES5に設定しているのに、moduleをES6に設定すると、モジュール部分だけES6の書き方になり、古いブラウザでは動かない可能性があります。

基本的には、targetが古いバージョンならmoduleも古い形式に、targetが新しいバージョンならmoduleも新しい形式にすることをおすすめします。

環境に合わせた設定を選ぶ

開発する環境(ブラウザ、Node.js、React、Vueなど)によって、適切な設定が異なります。フレームワークを使う場合は、公式ドキュメントで推奨されている設定を参考にすると良いでしょう。

カテゴリの一覧へ
新着記事
New1
TypeScript
TypeScriptでパスエイリアスを設定する方法!baseUrlとpathsでコードをスッキリ整理
New2
JavaScript
JavaScriptのfor文の書き方を初心者向けにやさしく解説
New3
JavaScript
JavaScriptの関数でよくあるエラーとその解決法まとめ
New4
JavaScript
JavaScriptのイベント処理でよくあるエラーとその対処法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのマウスイベントの使い方(click, mouseoverなど)
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptの純粋関数(pure function)と副作用の違いを理解しよう
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptで文字列をforループで1文字ずつ処理する方法!初心者向け解説
No.7
Java&Spring記事人気No7
TypeScript
TypeScript学習におすすめの無料教材・リファレンスサイト【初心者向け】
No.8
Java&Spring記事人気No8
JavaScript
JavaScriptのDOMContentLoadedとloadイベントの違いを理解しよう