Configurando o projeto

Podemos executar códigos desenvolvidos em TypeScript a partir de qualquer pasta. No entanto, para termos uma melhor organização, vamos trabalhar com projetos em pastas.

Você pode criar uma pasta nova pela interface gráfica ou, se estiver usando o Windows, usar a linha de comando:

mkdir projeto

Em seguida, vamos acessar a pasta:

cd projeto

E, finalmente, iniciar o projeto:

npm init

A flag -y pode ser usada junto ao comando anterior, npm init -y, para que todas as respostas sejam yes. Esse comando criará um arquivo package.json, com as configurações do nosso projeto, incluindo as dependências.

Adicionando TypeScript ao projeto

Para adicionarmos TypeScript ao projeto, precisamos executar o seguinte comando dentro da pasta:

npm i -D typescript

O comando a seguir instalará as dependências necessárias para a transpilação do TypeScript para JavaScript.

Transpilando o código

Para converter um código escrito em TS para JS, executamos o seguinte comando:

npx tsc meuprograma.ts

Note que, ao final dessa execução, será criado um arquivo meuprograma.js. Se você abrir esse novo arquivo, verá que a sintaxe em JavaScript está um pouco diferente. Essa característica está relacionada com a versão do ECMAScript (nome oficial do JavaScript) usada para a conversão.

Para executar o programa, de fato, precisamos executar:

node meuprograma.js

Executando diretamente o código

Para facilitar o processo de execução de códigos escritos em TypeScript, podemos adotar uma outra estratégia, usando a biblioteca ts-node. Antes, porém, precisamos fazer a sua instalação:

npm i ts-node

Assim, quando desejarmos executar um código escrito em TypeScript, precisaremos apenas executar a seguinte linha de comando:

npx ts-node meuprograma.ts

Criando o arquivo de configuração do TypeScript

Para executarmos nosso projeto, precisamos criar um arquivo de configuração na raiz, chamado tsconfig.json, com o seguinte conteúdo:

{
    "compilerOptions": {
      "module": "ES6",
      "target": "ES6",
      "esModuleInterop": true,
      "moduleResolution": "node",
      "strict": true
    },
    "include": ["*.ts"]
  }