Estoy tratando de implementar una verificación de código:
const transfer = async ( amount: string ): Promise<void> => { if (parseFloat(amount) <= parseFloat('0.01')) { amount = String((2 / 100) * amount); } ....... } En general, quiero hacer un cheque y reducir la cantidad con un porcentaje muy pequeño. Pero recibo un error para esta línea * amount); :
TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.¿Sabes cómo puedo solucionar este problema?
Deberías estar haciendo String((2 / 100) * parseFloat(amount)); : olvidaste convertirlo a un número para operaciones aritméticas. Además, no es necesario usar parseFloat(0.01) cuando puede usar 0.01 directamente. Su código actualizado se vería así:
const transfer = async ( amount: string ): Promise<void> => { if (parseFloat(amount) <= 0.01) { amount = String((2 / 100) * parseFloat(amount)); } // More code here... }Además, si desea convertir a cadena, una forma más sencilla es usar literales de plantilla:
if (parseFloat(amount) <= 0.01) { amount = `2 / 100 * ${parseFloat(amount)}`; }Para resolver esto, ambos resultados de cadena deben convertirse a número. Esto se puede lograr mediante estos 3 métodos:
1. Usando el operador unario (+):
const transfer = async ( amount: string ): Promise<void> => { if (+amount <= 0.01) { amount = String(+(2 / 100) * +amount); } // More code here... }2.parseFloat() :
const transfer = async ( amount: string ): Promise<void> => { if (parseFloat(amount) <= 0.01) { amount = String((2 / 100) * parseFloat(amount)); } // More code here... }3.Multiplicar con el número:
const transfer = async ( amount: string ): Promise<void> => { if ((amount*1) <= 0.01) { amount = String((2 / 100) * (amount*1)); } // More code here... } la mayoría de este error ocurre por demasiados corchetes. Debe probar 1 método Unary Operator (+) . ayuda a convertir una cadena en un número y no necesita envolver un valor de cadena entre corchetes.