Ambos describen la forma de los datos y a menudo son intercambiables, pero tienen capacidades diferentes.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
Ambos describen la forma de los datos y a menudo son intercambiables, pero tienen capacidades diferentes.
interface User { name: string; age: number; }
type User2 = { name: string; age: number; };
typeinterfacetype ID = string | number; // unions
type Pair = [number, number]; // tuples
type Name = User["name"]; // indexed/mapped/conditional types
type Nullable<T> = T | null; // wrap any type
type es un alias general para cualquier tipo: primitivos, unions, tuplas, mapped types. interface solo describe formas de objetos o funciones.
interface puede hacer y type nointerface Box { width: number; }
interface Box { height: number; } // declaration merging — both merge into one
// Box now has width AND height
Las interfaces soportan declaration merging (múltiples declaraciones se combinan) y son la forma idiomática de extender o ampliar, incluido ampliar tipos de librerías de terceros.
interface Admin extends User { role: string; } // interface
type Admin2 = User & { role: string }; // type uses intersection
Una convención común: usar interface para formas de objetos y APIs públicas (mejores mensajes de error, extensibles, mergeables), y type cuando necesitas unions, tuplas u otras operaciones de tipos. Elige uno como predeterminado para mantener consistencia: muchos equipos usan interface por defecto para objetos y recurren a type solo cuando se necesita su potencia extra.
Una biblioteca de preguntas de entrevista de IT con respuestas detalladas — de Junior a Senior.
Donar