Las interfaces en TypeScript es una muy buena forma de definir el contrato de nuestros objetos, es decir, que forma y que metodos van a tener. En su estructura es muy parecido a los tipos personalizados
interface Jugador{
id:number
name:string,
club:string
}
Podemos agregarle también metodos, como hemos dicho arriba
interface Jugador{
id:number
name:string,
club:string,
saludar:()=>void
}
A la hora de crear un jugador, sería asi
const borja:Jugador={
id:1,
name:"Miguel Borja",
club:"River Plate",
saludar:()=>{
console.log(borja.name)
}
}
Las interfaces se pueden anidar para crear cada vez interfaces mas grandes. Veamos el siguiente ejemplo con un producto
interface Producto{
id:number,
name:string,
precio:number
}
Ahora queremos integrar un carrito de compras que contenga productos
interface CarritoCompras{
id:number,
total:number,
productos:Producto[]
}
Volvamos al ejemplo de los productos. Todos los productos van a tener esas caracteristicas pero algunos tendran otras mas especificas, por ejemplo pensando en una tienda de componentes de computacion habrá otra interfaz llamada PlacaVideo para las placas de video, pero que comparten los elementos de la interfaz Producto. Lo que se puede hacer en este caso es extender la interfaz para sumar los elementos de las dos interfaces.
interface PlacaVideo extends Producto{
marca:string,
modelo:string,
año:number
}
Para poder instanciar una placa de video deberiamos llenar todos los datos, como este ejemplo
const placa1: PlacaVideo={
id:1,
marca:"Nvidia",
modelo:"RTX 2060",
año:2021,
precio:250000,
name:"Placa de Video Nvidia RTX 2060"
}
Para poder agregarle metodos a las interfaces en formato de funciones debemos indicarle que tipo de parametros reciben y cual será el tipo del retorno. Por ejemplo, supongamos que queremos crear una interfaz para todas las operaciones que puede haber en un carrito de compras
interface CarritoOps{
agregar:(producto: Producto)=>void
eliminarCarrito:()=>void
}