Una interface define qué propiedades y métodos debe tener un objeto:
Si un objeto dice ser Persona, debe tener todas las propiedades definidas en la interface. Ni más, ni menos.
Igual que con los tipos inline:
Las interfaces pueden definir métodos que el objeto debe implementar:
La interface dice: "todo Vehiculo debe tener un método describir que devuelva un string". Cómo lo implementa es cosa del objeto.
TypeScript usa tipado estructural — lo que importa es la forma, no el nombre del tipo:
Punto y Coordenada son tipos diferentes pero tienen la misma forma, así que son compatibles. A TypeScript no le importa el nombre — le importa la estructura.
Si el objeto tiene al menos las propiedades que pide la interface, es compatible. Puede tener propiedades extra.
Piensa en las interfaces como contratos. No dicen cómo hacer algo, dicen qué debe existir:
Cualquier objeto que tenga play(), pause() y duracion cumple el contrato de Reproducible.
Vehiculo con marca (string), modelo (string), año (number) y un método describir() que devuelva stringVehiculodescribir() e imprime el resultadoLas interfaces son contratos. Definen qué debe existir sin dictar cómo se implementa. Es la base de la programación orientada a interfaces.