Avatar ·

TypeScript: ¿Cuál es la diferencia entre interface y type? ¿Cuándo usar qué?

¡Hola a todos! Empecé a estudiar TypeScript y me confundí con la diferencia entre `interface` y `type`. Parece que ambos permiten describir la estructura de objetos, pero no entiendo cuándo aplicar cada herramienta. Miren mi código. Estoy tratando de describir un usuario y su dirección: ```typescript // Opción con interface interface IUser { name: string; age: number; address: IAddress; } interface IAddress { city: string; street: string; } // Opción con type type TUser = { name: string; age: number; address: TAddress; } type TAddress = { city: string; street: string; } ``` Ambas opciones funcionan, pero he oído que hay algunas diferencias fundamentales. Por ejemplo, vi que `type` puede hacer algo con uniones, pero `interface` no. Y también en algunos proyectos usan `interface` para todo, mientras que en otros usan `type`. Por favor, díganme cuál es la diferencia real. ¿Cuáles son las reglas de buena práctica? ¿Quizás hay situaciones donde solo se puede usar uno?