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
number | string
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
{ name: string; age: number }
Expandindo Aliases de Tipo
Aliases podem herdar ou expandir outros aliases usando o operador &
type Person = { name: string; age: number };
type Employee = Person & { company: string };
Aqui, o alias Employee
Person
company
string
Employee
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
Employee
Person
Person