tengo una función para calcular el área del polígono, y aquí está mi función
import {distance} from "mathjs" function getArea(arrayCord) { let triangle =[] let area = 0.0 let a =0.0 let b =0.0 let c =0.0 let s =0.0 for (let i = 0; i < arrayCord.length-2; i++) { a = distance(arrayCord[i],arrayCord[i+1])// p1-p2 b = distance(arrayCord[i+1],arrayCord[i+2]) //p2 - p3 c = distance(arrayCord[i],arrayCord[i+2]) //p3-p1 s = (a+b+c)/2; triangle[i] = Math.sqrt(s*(sa)*(sb)*(sc)) area+= triangle[i] } return area; }cuando copio la función en una clase de mecanografiado y la uso, aparece este error que dice
El operador '+' no se puede aplicar a los tipos 'número | matemáticas.BigNumber' y 'número | matemáticas.BigNumber'
la función en mi texto mecanografiado era
const getArea = (arryy:(number|undefined)[][]) =>{ let triangle =[] let area = 0.0 let a:(number|BigNumber) =0.0 let b:(number|BigNumber) =0.0 let c:(number|BigNumber) =0.0 let s:(number|BigNumber) =0.0 for (let i = 0; i < arryy.length-2; i++) { a = distance(arryy[i],arryy[i+1])// p1-p2 b = distance(arryy[i+1],arryy[i+2]) //p2 - p3 c = distance(arryy[i],arryy[i+2]) //p3-p1 s = (a+b+c)/2; triangle[i] = Math.sqrt(s*(sa)*(sb)*(sc)) area+= triangle[i] } return area; }¿Cómo resolver este problema para poder usar mi función en mi clase de mecanografiado?
No puede usar aritmética regular en BigNumber s.
Reemplazar
s = (a+b+c)/2con
s = math.divide(math.add(a, b, c), 2) Pero debe tener en cuenta que math.divide devuelve number | BigNumber | Fraction | Complex | Unit | Array | Matrix , por lo que s posible que sea necesario ajustar el tipo de correo electrónico.
Ver:
number y BigNumber se ven como dos tipos de datos, y Typescript no sabe que esta operación de adición está permitida. Entonces, en su caso, a podría ser un number y b podría ser un BigNumber .
Si está seguro de que se pueden agregar juntos, puede usar // @ts-ignore I'm sure this adds en la línea arriba del comentario donde se muestra el error.