Pular para conteúdo

05 TypeScript

TypeScript#

TypeScript é um superset do JavaScript que adiciona recursos de tipagem estática e outras funcionalidades à linguagem. Ele foi desenvolvido pela Microsoft e é uma escolha popular para grandes projetos JavaScript.

Configuração#

Para começar a usar TypeScript, você precisa configurar um ambiente de desenvolvimento. Você pode instalar o TypeScript globalmente usando o npm com o seguinte comando:

npm install -g typescript

Depois de instalado, você pode criar um arquivo .ts e compilá-lo usando o comando tsc. Por exemplo, crie um arquivo app.ts com o seguinte código:

function dizerOla(nome: string) {
  console.log(`Olá, ${nome}!`);
}

dizerOla('TypeScript'); // Olá, TypeScript!

Em seguida, compile o arquivo app.ts usando o comando tsc app.ts. Isso irá gerar um arquivo app.js que pode ser executado normalmente no Node.js ou em um navegador.

Tipos básicos#

Uma das principais funcionalidades do TypeScript é a tipagem estática. Isso significa que você pode especificar o tipo de dados que uma variável pode armazenar e o TypeScript irá verificar se você está usando a variável corretamente em tempo de compilação. Aqui estão alguns tipos básicos em TypeScript:

// Números
let numero: number = 10;

// Strings
let texto: string = 'Olá';

// Booleanos
let booleano: boolean = true;

// Arrays
let lista: number[] = [1, 2, 3];
let lista2: Array<string> = ['a', 'b', 'c'];

// Tuplas
let tupla: [string, number] = ['olá', 10];

// Enums
enum Cor {
  Vermelho,
  Verde,
  Azul,
}
let cor: Cor = Cor.Vermelho;

// Any
let qualquerValor: any = 'olá';

Observe que você pode usar a sintaxe let nomeVariavel: tipoVariavel = valor para especificar o tipo de uma variável.

Funções#

As funções em TypeScript podem ter tipos de argumento e tipo de retorno especificados. Aqui está um exemplo:

function somar(valor1: number, valor2: number): number {
  return valor1 + valor2;
}

Observe que o tipo de retorno é especificado após os tipos dos argumentos usando a sintaxe function nomeFuncao(arg1: tipoArg1, arg2: tipoArg2): tipoRetorno.

Interfaces#

As interfaces são uma maneira de definir tipos personalizados em TypeScript. Por exemplo, você pode definir uma interface para um objeto com propriedades específicas:

interface Pessoa {
  nome: string;
  idade: number;
}

function cumprimentar(pessoa: Pessoa) {
  console.log(`Olá, ${pessoa.nome}! Você tem ${pessoa.idade} anos.`);
}

let alice: Pessoa = { nome: 'Alice', idade: 30 };
cumprimentar(alice); // Olá, Alice! Você tem 30 anos.

Observe que a função cumprimentar espera um objeto do tipo Pessoa.

Classes#

As classes em TypeScript permitem definir objetos com propriedades e métodos. Aqui está um exemplo:

class Animal {
  nome: string;
  constructor(nome: string) {
    this.nome = nome;
  }
  fazerBarulho() {
    console.log('Barulho genérico de animal');
  }
}

class Cachorro extends Animal {
  fazerBarulho() {
    console.log('Au au!');
  }
}

let cachorro: Cachorro = new Cachorro('Rex');
console.log(cachorro.nome); // 'Rex'
cachorro.fazerBarulho(); // 'Au au!'

Observe que a classe Cachorro herda da classe Animal usando a sintaxe class nomeClasse extends nomeClassePai. A classe Cachorro sobrescreve o método fazerBarulho da classe Animal.