`type` creates a named alias for any type — object shapes, unions, tuples, primitives. `interface` is specifically for object shapes but can be extended and merged.
ts
type Address = string;
type TxStatus = "pending" | "confirmed" | "failed";
interface Token {
symbol: string;
decimals: number;
}
interface Token {
totalSupply: number; // declaration merging
}Interfaces support `extends` for inheritance; type aliases use intersections (`&`) to combine shapes. In practice: use `interface` for public object APIs you may extend, and `type` for unions, tuples, and utility compositions.