Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

108
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!