typescript1.8 - Opções de Compilação do TypeScript: module vs target
Tentando ter algum entendimento básico sobre módulo e alvo.
Eu gostaria de saber a diferença entre as opções de compilação module e target em um tsconfig.json típico
{
"compilerOptions": {
"module": "es6",
"sourceMap": true,
"target": "es6"
}
}
O que acontece se eu fornecer as seguintes opções:
módulo: commonjs, alvo: es6
módulo: es6, alvo: commonjs
módulo: commonjs, alvo: commonjs
Resposta #1
Existem 2 coisas diferentes. --target simplesmente significa qual versão do ECMAScript você está usando para codificar. --module simplesmente significa qual sistema de módulos você está usando, como commonjs para Node ou módulo ES para todos os que o suportam e assim por diante.
Resposta #2
Uma explicação mais detalhada está aqui: Entendendo "target" e "module" no tsconfig
Veja também: Entendendo "target" e "module" no tsconfig.
Aqui está uma citação da documentação sobre opções de compilador:
--alvo
Especifique a versão alvo do ECMAScript: 'es3' (padrão), 'es5' ou 'es6'.
--módulo
Especifique a geração de código do módulo: 'none', 'commonjs', 'amd', 'system', 'umd', 'es6' ou 'es2015'.
- Apenas 'amd' e 'system' podem ser usados em conjunto com --outFile.
- Os valores 'es6' e 'es2015' podem ser usados ao direcionar ES5 ou inferior.
Resposta #3
A propriedade "target" é usada para especificar a versão do JavaScript em que seu código TypeScript será eventualmente compilado. A propriedade "module" especifica o tipo de sintaxe de módulo que seu código compilado (TS-->JS) usará. Por exemplo, se você definir a propriedade module como "commonJS", seu código compilado usará "require/module.exports" para importar/exportar. No entanto, a propriedade module não afetará o restante do código compilado. Para maior clareza, consulte esta resposta: https://stackoverflow.com/a/61215252/8659116