ChatGPT解决这个技术问题 Extra ChatGPT

TypeScript 编译选项:模块与目标

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

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

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

如果我提供以下选项会发生什么:

模块:commonjs,目标:es6

模块:es6,目标:commonjs

模块:commonjs,目标:commonjs

目标不能是 commonjs。它只能是:“es3”(默认)、“es5”或“es6”。你读过Compiler Options doc吗?
对 Paleo 的回答的一个重要更正:Documentation 实际上表示在定位 “ES5”或更低可以使用“ES6”和“ES2015”值。 <<

m
motss

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


P
Paleo

更详细的解释在这里:Understanding "target" and "module" in tsconfig

另请参阅:Understanding "target" and "module" in tsconfig

以下是来自文档 on compiler options 的引用:

--target 指定 ECMAScript 目标版本:“es3”(默认)、“es5”或“es6”。 --module 指定模块代码生成:“none”、“commonjs”、“amd”、“system”、“umd”、“es6”或“es2015”。只有 'amd' 和 'system' 可以与 --outFile 一起使用。 'es6' 和 'es2015' 值可以在以 ES5 或更低版本为目标时使用。


以下是此模块与目标混淆的更好解释:stackoverflow.com/questions/41993811/…
V
Vijay Joshua Nadar

“target”属性用于指定您的 TypeScript 代码最终将编译成的 JavaScript 版本。 “module”属性指定了您编译的(TS-->JS)代码将使用的模块语法类型。例如,如果您将模块属性设置为“commonJS”,您编译的代码将使用“require/module.exports”来导入/导出。然而,模块属性不会影响编译代码的其余部分。为了清楚起见,请参考以下答案:https://stackoverflow.com/a/61215252/8659116