← 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 |
---|