LoginSignup
64
35

More than 5 years have passed since last update.

tsconfigのmoduleの設定値の違い: commonjs, amd, system, umd, es6, es2015, esnext, none

Last updated at Posted at 2019-04-25

本稿では、tsconfigのmoduleの設定値によってどのようなJavaScriptコードが生成されるかを確認するものである。次の設定値を試す: commonjs, amd, system, umd, es6, es2015, esnext, none。

コンパイルしてみるTypeScriptコード。

main.ts
export const a = 1;

未指定または、"commonjs"

main.js
"use strict";
exports.__esModule = true;
exports.a = 1;
  • CommonJSと呼ばれる規格。
  • Node.jsなどサーバサイドコードで一般的。

"amd"

main.js
define(["require", "exports"], function (require, exports) {
    "use strict";
    exports.__esModule = true;
    exports.a = 1;
});
  • Asynchronous Module Definition (AMD)と呼ばれる規格。
  • クライアントサイドコードで一般的。

"system"

main.js
System.register([], function (exports_1, context_1) {
    "use strict";
    var a;
    var __moduleName = context_1 && context_1.id;
    return {
        setters: [],
        execute: function () {
            exports_1("a", a = 1);
        }
    };
});

"umd"

main.js
(function (factory) {
    if (typeof module === "object" && typeof module.exports === "object") {
        var v = factory(require, exports);
        if (v !== undefined) module.exports = v;
    }
    else if (typeof define === "function" && define.amd) {
        define(["require", "exports"], factory);
    }
})(function (require, exports) {
    "use strict";
    exports.__esModule = true;
    exports.a = 1;
});
  • Universal Module Definition (UMD)と呼ばれる規格。
  • AMDとCommonJSの両方をサポートする。

"es6", "es2015", "esnext"

main.js
export var a = 1;

"none"

main.ts:1:1 - error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'.

1 export const a = 1;
  ~~~~~~~~~~~~~~~~~~~


Found 1 error.

参考

64
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
35