1
resposta

[Dúvida] Padrão commonjs com typescript

Gostaria de saber de que modo o projeto poderia ser construído com typescript utilizando o padrão commonjs, pois dei uma pesquisada e parece ter um pouco de complexidade, pelo que pesquisei seria necesário criar arquivos só para as tipagens e utilizar o padrão import/export neles.

1 resposta

Olá, Jose!

Realmente, pode parecer um pouco complexo no início, mas acredito que posso te ajudar a entender melhor.

Primeiro, é importante esclarecer que o TypeScript é totalmente compatível com o padrão CommonJS. Você pode usar a sintaxe require e module.exports do CommonJS em seus arquivos TypeScript da mesma maneira que faria em um arquivo JavaScript.

No entanto, se você quiser aproveitar os recursos de importação e exportação do ES6 no TypeScript, você precisará fazer algumas configurações adicionais. Aqui estão os passos básicos:

  1. Crie um arquivo tsconfig.json na raiz do seu projeto. Este arquivo é usado para configurar o compilador TypeScript.

  2. No arquivo tsconfig.json, você precisará definir algumas opções. Aqui está um exemplo de como poderia ser:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "outDir": "./dist",
        "rootDir": "./src"
    },
    "include": [
        "src/**/*.ts"
    ],
    "exclude": [
        "node_modules"
    ]
}

Neste exemplo, estamos dizendo ao compilador TypeScript para usar o padrão CommonJS para módulos, para compilar nosso código para ES6, e que nosso código fonte está na pasta src e queremos que o código compilado seja colocado na pasta dist.

Com essa configuração, você pode usar a sintaxe import e export do ES6 em seus arquivos TypeScript, e o compilador irá convertê-los para a sintaxe require e module.exports do CommonJS.

Quanto à criação de arquivos apenas para as tipagens, isso é algo que você pode fazer se quiser, mas não é estritamente necessário. Você pode definir as tipagens diretamente nos arquivos onde elas são usadas, se preferir.

Lembrando que são só sugestões pode ser que tenha que configurar algo amais dependendo do projeto.

Espero ter ajudado e bons estudos!