O que são interfaces e como elas funcionam?
Em uma lição anterior, você aprendeu a trabalhar com aliases de tipo e viu exemplos de como nomear tipos de objeto.
Como você deve se lembrar, uma forma de nomear um tipo de objeto seria usar a palavra-chave
type assim:
type ID = number | string;
type User = {
id: ID;
name: string;
};
Outra forma de nomear um tipo de objeto seria usar uma declaração interface assim:
type ID = number | string;
interface User {
id: ID;
name: string;
}
type e interface são semelhantes, mas uma diferença importante é que interfaces usam a palavra-chave extends para estender outras interfaces ou tipos, enquanto aliases type usam tipos de interseção (&) para combinar tipos.
Vamos ver alguns exemplos:
interface User {
id: number | string;
name: string;
}
interface Admin extends User {
role: string;
}
const adminUser: Admin = {
id: 101,
name: "Alice",
role: "superadmin"
};
Neste exemplo, User começa com id e name. A interface Admin estende User, o que significa que inclui id e name e adiciona uma nova propriedade chamada role.
Se você quiser estender um type, usaria um tipo de interseção (&) assim:
type User = {
id: number | string;
name: string;
};
type Admin = User & {
role: string;
};
const adminUser: Admin = {
id: 101,
name: "Alice",
role: "superadmin"
};
Admin combina o tipo User com um novo tipo de objeto que inclui role. O resultado tem a mesma forma do exemplo da interface, que é um objeto com id, name e role.
Tanto type quanto interface podem descrever a forma de um objeto. Se você não souber qual usar, lembre-se que interface é especificamente projetado para formas de objeto, enquanto type é mais flexível e também pode representar tipos união, primitivos e combinações de tipos mais complexas.Este módulo não possui perguntas. Marque como concluído.