Bastante nuevo en reactjs y ts. Sé por qué tengo este error, pero no estoy seguro de cuál sería la mejor solución para esto.
Actualmente usando reactjs creó un
interface IPropertyTax { annul: { current: number; previous: number; }; monthly: { current: number; previous: number; difference: number }; } const [propertyTax, setPropertyTax] = useState<IPropertyTax>({ annul: { current: 0, previous: 0 }, monthly: { current: 0, previous: 0, difference: 0 } });esta acción se realizará tratando de establecer el estado
setPropertyTax({ ...propertyTax, annul: { current: validatedValue }, monthly: { current: monthlyPropertyTax } }); Entonces obtendría un error de Property 'previous' is missing in type '{ current: number; }' but required in type '{ current: number; previous: number; }'
Sé que es porque no agregué previous ya que en mi interfaz es un campo obligatorio.
Así que pensé que tal vez debería hacerles opciones como
interface IPropertyTax { annul: { current?: number; previous?: number; }; monthly: { current?: number; previous?: number; difference?: number }; } pero esto llevaría a propertyTax.monthly.current podría ser que el Object is possibly 'undefined' lo que podría hacer (propertyTax.monthly.current || 0)
Lo anterior funcionaría, pero no sabía si esa es una buena opción.
Pensé en otra manera podría ser
setPropertyTax({ ...propertyTax, annul: { current: validatedValue, previous: propertyTax.annul.previous }, monthly: { current: monthlyPropertyTax, previous: propertyTax.monthly.previous, difference: propertyTax.monthly.difference } });Pero, de nuevo, ¿alguna de estas son buenas opciones? o hay una mejor manera de resolver esto?
Gracias de antemano por cualquier ayuda.
Como no está configurando pocas propiedades, está recibiendo este error.
si está tratando de actualizar la propiedad anual actual, entonces puede hacer esto
const newPropertyTax = propertyTax; newPropertyTax?.annual?.current = validatedValue; setPropertyTax(newPropertyTax);