Skip to content

Latest commit

 

History

History
46 lines (34 loc) · 1.34 KB

03.Constraints.md

File metadata and controls

46 lines (34 loc) · 1.34 KB

Constraints (Restricciones)

← Volver a la tabla de contenido

Son útiles cuando se trabaja con Generics, dándole mas información a TypeScript sobre el tipo de dato que contendrá el Generic.

function merge<T, U>(objA: T, objB: U) {
  return { ...objA, ...objB };
}

const mergedObject = merge(
  { first: 'cesar', hobbies: ['guitar', 'volleyball'] },
  { age: 30 }
);

en ese ejemplo anterior se podría sustituir el valor del segundo objeto de tipo genérico U a un numero y TypeScript no mostraría error ya que no se especifica de que tipo sera el Genérico U

function merge<T, U>(objA: T, objB: U) {
  return { ...objA, ...objB };
}

const mergedObject = merge(
  { first: 'cesar', hobbies: ['guitar', 'volleyball'] }, 30
);

para solucionar eso, se hace uso de la palabra extends seguida del tipo de dato string, object, Array, etc y con esto se le dice a TypeScript que los genéricos deben ser de tipo objecto

function merge<T extends object, U extends object>(objA: T, objB: U) {
  return { ...objA, ...objB };
}

const mergedObject = merge(
  { first: 'cesar', hobbies: ['guitar', 'volleyball'] }, { age: 30}
);

← Volver a la tabla de contenido