TypeScriptでtsconfig.jsonの「target」と「module」を理解する

2024-04-10

TypeScriptでtsconfig.jsonの「target」と「module」を理解する

target

target は、コンパイル後のJavaScriptコードがどのJavaScriptバージョンの仕様に準拠するかを指定します。例えば、

  • target: "es5" を設定すると、ES5の仕様に準拠したJavaScriptコードが生成されます。

設定例

{
  "compilerOptions": {
    "target": "es6"
  }
}

module

module は、コンパイル後のJavaScriptコードが使用するモジュールシステムを指定します。代表的なモジュールシステムは以下の通りです。

  • commonjs: Node.jsで使用されるモジュールシステムです。
  • amd: RequireJSなどのJavaScriptモジュールローダーで使用されるモジュールシステムです。
  • umd: Universal Module Definitionの略で、CommonJSとAMDの両方の環境で使用できるモジュールシステムです。
  • es6: ES6で導入されたモジュールシステムです。import/export構文を使用してモジュールの読み込みと書き出しを行います。
{
  "compilerOptions": {
    "module": "es6"
  }
}

targetとmoduleの組み合わせ

targetmodule は相互に影響しあいます。例えば、

  • target: "es5"module: "es6" を組み合わせると、ES5の仕様に準拠しつつ、ES6のモジュールシステムを使用するJavaScriptコードが生成されます。

注意点

  • 古いブラウザをサポートする必要がある場合は、 target を古いバージョンのJavaScriptに設定する必要があります。
  • 使用するモジュールシステムは、プロジェクトの環境に合わせて選択する必要があります。

まとめ




ES6モジュールを使用するサンプル

// ファイル名: main.ts

import { add } from "./math";

console.log(add(1, 2)); // 3

// ファイル名: math.ts

export function add(a: number, b: number): number {
  return a + b;
}

tsconfig.json

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

この設定の場合、main.tsmath.ts はES6モジュールシステムを使用してモジュール化されます。

CommonJSモジュールを使用するサンプル

// ファイル名: main.js

var add = require("./math").add;

console.log(add(1, 2)); // 3

// ファイル名: math.js

module.exports = {
  add: function(a, b) {
    return a + b;
  }
};
{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs"
  }
}

AMDモジュールを使用するサンプル

// ファイル名: main.js

define(["math"], function(math) {
  console.log(math.add(1, 2)); // 3
});

// ファイル名: math.js

define([], function() {
  return {
    add: function(a, b) {
      return a + b;
    }
  };
});
{
  "compilerOptions": {
    "target": "es5",
    "module": "amd"
  }
}



TypeScriptで「target」と「module」を設定する他の方法

コマンドラインオプション

tscコマンドを実行する際に、 --target と --module オプションを使用して設定できます。

tsc --target es6 --module commonjs main.ts

tsconfig.jsonファイルに "extends" プロパティを追加することで、別のtsconfig.jsonファイルの設定を継承することができます。

{
  "extends": "./base.tsconfig.json",
  "compilerOptions": {
    "module": "es6"
  }
}

Visual Studio Codeなどの開発ツールでは、プロジェクトの設定画面で「target」と「module」を設定することができます。

tsconfig.jsonファイル以外にも、「target」と「module」を設定する方法はいくつかあります。プロジェクトの規模や開発環境に合わせて、最適な方法を選択してください。


typescript


オブジェクト生成をレベルアップ! TypeScript ジェネリッククラスの型パラメーター活用

このチュートリアルでは、ジェネリッククラスの型パラメーターから新しいオブジェクトを作成する方法について説明します。このチュートリアルを理解するには、以下の知識が必要です。TypeScript の基本的な構文ジェネリッククラス解説GenericClass というジェネリッククラスを定義します。...


【超便利】TypeScriptでPromiseを使いこなして、非同期処理をもっとスムーズに!

このチュートリアルでは、TypeScript でネイティブ ES6 プロミスを使用する方法を説明します。 ES6 プロミスは、非同期操作を処理するための強力なツールであり、TypeScript での使用はさらに簡単です。前提知識このチュートリアルを始める前に、以下の知識が必要です。...


TypeScriptでオブジェクトリテラルを使って省略可能なパラメータを渡す

パラメータにデフォルト値を設定することで、そのパラメータを省略できます。この例では、messageパラメータはデフォルト値"How are you?"が設定されているので、省略しても問題ありません。省略可能なパラメータにundefinedを渡すことで、そのパラメータを省略できます。...


TypeScript で「window」や「document」が認識されないエラー: 原因と解決方法

TypeScript で開発中に、「window」や「document」などのグローバル変数が認識されないエラーが発生することがあります。このエラーは、TypeScript コンパイラがブラウザ環境のグローバル変数を認識できていないことを示しています。...


非同期処理を Rxjs で表現:toPromise() から firstValueFrom() と lastValueFrom() へ移行

Rxjs の toPromise() メソッドは、Observable を Promise に変換するために使用されていました。しかし、Rxjs 7 で非推奨化され、Rxjs 8 で削除される予定です。この変更は、Rxjs のより明確な意味論と一貫性を追求するために行われました。toPromise() は、Observable が完了する前に値を発行しなかった場合、誤解を招く可能性のある undefined を返すという問題がありました。...


SQL SQL SQL SQL Amazon で見る



TypeScript コンパイラオプションの罠: module と target を正しく選択しないとどうなる?

TypeScript コンパイルオプション module と target は、どちらもコンパイルされた JavaScript コードの出力形式に影響を与える重要なオプションです。しかし、それぞれ異なる役割を果たします。target オプションは、TypeScript コンパイラが生成する JavaScript コードの ECMAScript レベルを指定します。これは、コンパイラが使用する言語機能と、出力されたコードが実行できる JavaScript エンジンを決定します。


オプション「target」と「lib」の詳細解説:TypeScript コンパイラをマスターするための必須知識

TypeScriptでプロジェクトを構築する場合、コンパイラオプション「target」と「lib」を適切に設定することが重要です。これらのオプションは、生成されるJavaScriptコードのバージョンと、利用可能なライブラリAPIを制御します。


【保存版】tsconfig.jsonの「target」オプション:バージョン指定で開発をスムーズに

このファイルの中で、targetオプションは、コンパイルされたJavaScriptのターゲットとなるJavaScriptのバージョンを指定します。これは、生成されるJavaScriptコードがどのブラウザや実行環境で実行可能であるかを決定します。


TypeScriptでCommonJSとES Modulesを混在させる: esModuleInterop徹底解説

デフォルト値: false有効な値: true または false従来のJavaScriptモジュールシステムであるCommonJSは、module. exportsを使用してモジュールを公開します。一方、ES Modulesは、exportキーワードを使用してモジュールを公開します。