Objetos, interfaces y alias
Un tipo de objeto se puede escribir directamente en la firma:
function printCoord(pt: { x: number; y: number }) {
console.log(pt.x);
}
Una propiedad opcional lleva ?:
function printName(obj: { first: string; last?: string }) {
console.log(obj.last?.toUpperCase());
}
Alias de tipo
Un alias le pone nombre a un tipo:
type Point = { x: number; y: number };
type ID = number | string;
El alias es solo un nombre: no crea una versión distinta del tipo.
Interfaces
interface Point {
x: number;
y: number;
}
La diferencia que importa
| | interface | type | |---|---|---| | Extender | interface Bear extends Animal {} | type Bear = Animal & {} | | Reabrir | Sí, se puede volver a declarar y se fusiona | No: da error de identificador duplicado |
La heurística de la documentación es simple: usa interface hasta que necesites algo que solo type puede hacer. Un ejemplo de eso es nombrar una unión, como type ID = number | string, que con interface no se puede.