Tipos de Dados

Os tipos de dados em TypeScript são:

  • Boolean
  • Number
  • String
  • Array
  • Tuple
  • Enum
  • Any
  • Void

Os três primeiros, Boolean, Number e String, são chamados "tipos primitivos". Os demais possuem especificações de tipos mais detalhadas, como será visto a seguir.

Boolean

Tipos de dados boolean podem conter valores true ou false.

let completo: boolean = false;

Number

Todos os números em TypeScript são valores em ponto flutuante. O tipo number representa qualquer valor numérico, inclusive em outros sistemas de numeração.

let d: number = 6;
let f: number = 6.1;
let h: number = 0xf00d; // 0x... número hexadecimal
let b: number = 0b1010; // 0b... um número binário
let o: number = 0o744;  // 0o... número octal

O tipo string representa literais (conjuntos de caracteres). Podem ser usadas aspas simples ou duplas.

let cor: string = 'azul';
cor = 'preto';

TypeScript fornece o recurso de template strings, que podem conter várias linhas e incluir expressões. Esta representação de string usa o acento grave (`) e as expressões são representadas com a sintaxe ${ expr }.

let nome: string = `João`;
let idade: number = 37;
let mensagem: string = `Olá, meu nome é ${ nome }.

Completarei ${ idade + 1 } anos de idade no próximo mês.`;

Isso seria o equivalente a declarar uma string como:

let mensagem: string = 'Olá, meu nome é ' + nome + '.\n\n' + 
'Completarei ' + (idade + 1) + ' anos de idade no próximo mês.';

Array

Tipos de dados array podem ser declarados de duas formas. A primeira delas usa o tipo dos elementos do array seguido de [].

let numeros: number[] = [1, 2, 3, 4, 5];

A outra forma utiliza a classe Array e o conceito de generics (veremos mais adiante).

let numeros: Array<number> = [1, 2, 3, 4, 5];

Nas duas formas, o código determina o tipo de dados dos elementos do array. Assim, a regra é que todos os elementos do array tenham o tipo usado na sua declaração.

O tipo Array é uma exceção aos outros tipos. Number, Boolean e String, pois é um tipo de instância. Na prática, Array é do tipo object (herda da classe Object como todo tipo de instância).

Tuple

O tipo tuple (tupla) parece com uma especialização de um array, contendo um número finito de elementos.

// declara uma variável do tipo tupla com dois elementos
let x: [number, number];
// atribui valor para a variável
x = [10, 10];

// declara uma variável do tipo tupla com três elementos e a inicializa
let indice: [number, string, number] = [1, 'José', 40];

Para acessar os elementos de uma variável do tipo tupla utiliza-se a mesma sintaxe para acessar elementos de um array.

console.log(x[0]);

Ao acessar um índice fora dos limites da declaração da variável, o TypeScript emprega o conceito de union types (isso será visto mais adiante).

x[4] = 1; // ok, os elementos podem ser dos tipos number ou string
x[5] = false; // erro, boolean não pode ser atribuído a 'number | string'

Na prática, uma tupla é do tipo Array.

Enum

O tipo enum representa uma maneira de dar nomes mais amigáveis para um conjunto de valores.

enum Cor { Vermelho, Verde, Azul};
let c: Cor = Cor.Vermelho;
let c: Cor = 0; // é a mesma coisa que a linha de cima

Por padrão, os elementos de um enum começam com 0, mas isso pode ser modificado manualmente.

enum Cor { Vermelho = 1, Verde = 3, Azul = 5};
let c: Cor = Cor.Vermelho;

Também é possível acessar um enum pelo índice e ter acesso ao nome do elemento.

enum Cor { Vermelho, Verde, Azul };
let v: string = Cor[0];
console.log(v); // imprime 'Vermelho'

Na prática, Enum é do tipo number.

Any

Quando não for possível conhecer um tipo de dados ou quando for necessário abrir mão da checagem de tipo em tempo de compilação, pode-se utilizar o tipo any.

let n: any = 4;
n = 'uma string';
n = false;

O tipo any também pode ser útil para declarar um variável do tipo array cujos tipos de dados dos elementos devem ser diferentes -- ou não são conhecidos.

let lista: any[] = [1, true, 'uma string'];

Void

O tipo void é o oposto de any: significa a ausência de um tipo. É mais comum utilizar esse tipo de dados em funções que não retornam um valor.

function log(mensagem: string): void {
    console.log(mensagem);
}

Além disso, uma variável do tipo void pode receber apenas os valores undefined ou null.

let n: void = undefined;
n = null;

Na prática, o valor undefined é do tipo undefined e o valor null é do tipo object.

Asserção de tipos

O recurso de asserção de tipos é utilizado para afirmar, no código, qual o tipo de dados que se deseja utilizar. Isso também é conhecido como cast. A sintaxe é utilizar o tipo de dados que se deseja entre <> antes do valor ou da variável.

let valor: any = 'uma string';
let tamanho: number = (<string>valor).length;

Outra sintaxe disponível é utilizar o operador as.

let valor: any = 'uma string';
let tamanho: number = (valor as string).length;

Para identificar o tipo de dados de uma variável ou de um valor podem ser utilizados os operadores:

  • typeof: para tipos primitivos
  • instanceof: para tipos de instância (objetos)

results matching ""

    No results matching ""