Alias de Tipo - TypeScript

O TypeScript permite definir aliases de tipos usando a palavra-chave type:

type id = number | string;

let userId: id = 2;
console.log(`Id: ${userId}`);
userId = "qwerty";
console.log(`Id: ${userId}`);

Aqui, o alias id é definido para o tipo combinado number | string. Em seguida, podemos usar esse alias para definir variáveis.

Além disso, os aliases podem ser aplicados para definir o tipo de parâmetros e o resultado de funções:

// Definindo o alias
type id = number | string;

// O parâmetro da função usa o alias
function printId(inputId: id) {
    console.log(`Id: ${inputId}`);
}

// O tipo de retorno da função também é um alias
function getId(isNumber: boolean): id {
    return isNumber ? 1 : "1";
}

// Usando as funções
printId(12345);
printId("qwerty");
console.log(getId(true));

Os aliases de tipos são especialmente úteis ao lidarmos com objetos complexos:

type Person = { name: string; age: number };

let tom: Person = { name: "Tom", age: 36 };
let bob: Person = { name: "Bob", age: 41 };

function printPerson(user: Person) {
    console.log(`Name: ${user.name}  Age: ${user.age}`);
}

printPerson(tom);
printPerson(bob);

Nesse caso, o alias Person é definido para o tipo { name: string; age: number }, que representa um objeto complexo. Esse alias é então utilizado para declarar variáveis e parâmetros de funções.

Expandindo Aliases de Tipo

Aliases podem herdar ou expandir outros aliases usando o operador &. Por exemplo:

type Person = { name: string; age: number };
type Employee = Person & { company: string };

Aqui, o alias Employee expande o alias Person, adicionando a propriedade company, que é do tipo string. Isso significa que Employee é equivalente ao tipo:

type Employee = { name: string; age: number; company: string };

A aplicação de aliases expandidos é semelhante à de aliases comuns:

type Person = { name: string; age: number };
// Expandindo o alias Person
type Employee = Person & { company: string };

let tom: Person = { name: "Tom", age: 36 };
let bob: Employee = { name: "Bob", age: 41, company: "Microsoft" };

function printPerson(user: Person) {
    console.log(`Name: ${user.name}  Age: ${user.age}`);
}

printPerson(tom);
printPerson(bob);  // bob é do tipo Employee, mas também corresponde ao alias Person

Este exemplo mostra como bob, mesmo sendo do tipo Employee, pode ser utilizado onde se espera um Person, já que ele herda as propriedades definidas pelo alias Person.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com