Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

107
Vistas
¿Cómo puedo agregar una nueva clave con un valor a un objeto en TypeScript?

Tengo una función cuya tarea es contar el precio de un producto después de un descuento. Sin embargo, como resultado obtengo objetos sin este valor (totalPrice). ¿Dónde estoy cometiendo un error?

 const arrayObj = [ { basePrice: 12, discount: 3, }, { basePrice: 12, discount: 2, }, { basePrice: 8, discount: 2, }, ]; interface Product { basePrice: number; discount: number; totalPrice?: number; } const countTotalPrice = (products: Product[]): Product[] => { const calculateTotalPrice = ( basePrice: number, discount: number, totalPrice?: number ): void => { totalPrice = basePrice - discount; }; products.forEach((product) => calculateTotalPrice( product.basePrice, product.discount, product.totalPrice ) ); return products; }; console.log(countTotalPrice(arrayObj));
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

No está modificando productos en su matriz. Tienes dos opciones:

  • use products.forEach y pase una función que modifique un producto. Devolver productos modificados.
  • use products.map y pase una función que toma un producto y crea un nuevo objeto con propiedad adicional, devuelve el resultado del mapeo.

Yo diría que el segundo enfoque es más idiomático en JS/TS.

 const countTotalPrice = (products: Product[]): Product[] => { return products.map((product) => ({ // the parentheses are necessary in this position // we want object literal, not code block ...product, totalPrice: product.basePrice - product.discount }) ); }

Enlace del patio de recreo

about 4 years ago · Juan Pablo Isaza Denunciar

0

prueba esto

 const countTotalPrice = (products: Product[]): Product[] => { const calculateTotalPrice = ( p:Product ): void => { p.totalPrice = p.basePrice -p. discount; }; products.forEach((product) => calculateTotalPrice( product ) ); return products; };
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar Array.prototype.map() combinado con la asignación de desestructuración :

 interface Product { basePrice: number; discount: number; totalPrice?: number; } const arrayObj: Product[] = [{ basePrice: 12, discount: 3 },{ basePrice: 12, discount: 2 },{ basePrice: 8, discount: 2 },]; const countTotalPrice = (products: Product[]): Product[] => products.map((p) => ({ ...p, totalPrice: p.basePrice - p.discount, }));

Ejemplo de código sin TypeScript:

 const arrayObj = [{basePrice: 12,discount: 3,},{basePrice: 12,discount: 2,},{basePrice: 8,discount: 2,},] const countTotalPrice = (products) => products.map((p) => ({ ...p, totalPrice: p.basePrice - p.discount, })) console.log(countTotalPrice(arrayObj))

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda