Interface vs Type
José Aular / 26.08.2022
Tabla de contenido
Concepto
Hay dos formas diferentes en TypeScript para declarar tipos de objetos: interface y type.
Las interface y los type son muy similares y, en muchos casos, puedes elegir entre ellos libremente.
Casi todas las funciones de una interface están disponibles en type, la distinción clave es que un type
no se puede volver a abrir para agregar nuevas propiedades frente a una interface que siempre es extensible.
Sugerencia
Considera usar type para las props y state en los componentes de React, por consistencia y porque está más restringido.
Siempre usa interface para la definición de la API pública al crear una biblioteca o definiciones de tipo ambiental de terceros,
ya que esto permite que un consumidor las amplíe a través de la fusión de declaraciones si faltan algunas definiciones.
Ejemplo de Type
type Hobby = {
name: string;
};
type Address = {
city: string;
street: string;
};
type User = {
name: string;
age: number;
email?: string;
hobbies: Hobby[];
};
// Intersection Type
type UserData = User & Address;
const userData: UserData = {
name: "Michael Jordan",
age: 59,
hobbies: [{ name: "Basketball" }, { name: "Golf" }],
city: "Chicago",
street: "2700 Point Lane",
};Ejemplo de Interface
interface Hobby {
name: string;
}
interface Address {
city: string;
street: string;
}
// Extends
interface User extends Address {
name: string;
age: number;
email?: string;
hobbies: Hobby[];
}
const userData: User = {
name: "Michael Jordan",
age: 59,
hobbies: [{ name: "Basketball" }, { name: "Golf" }],
city: "Chicago",
street: "2700 Point Lane",
};