Skip to content

Latest commit

 

History

History
69 lines (50 loc) · 1.75 KB

02.CreatingGenericFunction.md

File metadata and controls

69 lines (50 loc) · 1.75 KB

Creating Generic Function (Creación de funciones genéricas)

← Volver a la tabla de contenido

teniendo la función

function merge(objA: object, objB: object) {
  return { ...objA, ...objB };
}

const mergedObject = merge({ first: 'cesar' }, { age: 30 });

console.log(mergedObject)
// return
{ "first": "cesar", "age": 30 }

nos retornaría el objeto mostrado anteriormente, pero no se podría ingresar a las propiedades como first ya que TypeScript infiere que el return seria un objecto pero no las propiedades que hay en el.

creando tipos genéricos seria posible acceder a esas propiedades

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

const mergedObject = merge(
  { first: 'cesar', hobbies: ['guitar', 'volleyball'] },
  { age: 30 }
);
// return
{ "first": "cesar", "age": 30 }
console.log(mergedObject.first)
// return
"cesar"

también podemos invocar la función agregando mas propiedades al objeto:

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

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

console.log(mergedObject)
console.log(mergedObject.hobbies)

esto es posible ya que estamos indicando a TypeScript que el return de la función sera la intersección de los dos objetos T & U.

incluso se puede invocar la misma función pasando otros objectos

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

const mergedObject2 = merge({ first: 'cesar' }, { age: 30 });

← Volver a la tabla de contenido