TypeScript 编译选项:模块与目标

TypeScript Compile Options: module vs target

尝试对模块和目标有一些基本的了解。

我想知道典型的模块和目标编译选项之间的区别tsconfig.json

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

如果我提供以下选项会怎样:

模块:commonjs,目标:es6

模块:es6,目标:commonjs

模块:commonjs,目标:commonjs

更详细的解释在这里:


另请参阅:

这里引用了文档 on compiler options:

--target

Specify ECMAScript target version: 'es3' (default), 'es5', or 'es6'.

--module

Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', or 'es2015'.

  • Only 'amd' and 'system' can be used in conjunction with --outFile.
  • 'es6' and 'es2015' values may be used when targeting ES5 or lower.

有两种不同的东西。 --target 仅表示您正在使用哪个版本的 ECMAScript 进行编码。 --module 只是表示您正在使用哪个模块系统,例如 commonjs 表示 Node 或 ES 模块表示所有支持它的和不支持它的。

“目标”属性 用于指定您的 TypeScript 代码最终将编译成的 JavaScript 版本。 “模块”属性 指定编译后的 (TS-->JS) 代码将使用的模块语法类型。例如,如果您将模块 属性 设置为“commonJS”,您的编译代码将使用“require/module.exports”到 import/export。然而,模块 属性 不会影响编译代码的其余部分。为了清楚起见,请参考这个答案: