-1

我有一个计算多边形面积的函数,这是我的函数

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*(s-a)*(s-b)*(s-c))
        area+= triangle[i]
    }
    return area;
}

当我将函数复制到打字稿类并使用它时,我收到了这个错误

运算符 '+' 不能应用于类型 'number | math.BigNumber' 和 '数字 | 数学.BigNumber'

在此处输入图像描述

我打字稿中的功能是


          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*(s-a)*(s-b)*(s-c))
              area+= triangle[i]
            }
            return area;
        }

如何解决这个问题,以便我可以在我的打字稿类上使用我的函数?

4

2 回答 2

0

您不能对BigNumbers 使用常规算术。

代替

s = (a+b+c)/2

s = math.divide(math.add(a, b, c), 2)

但是您需要注意math.divide返回number | BigNumber | Fraction | Complex | Unit | Array | Matrix,因此您s 可能需要调整其类型。

看:

于 2021-12-24T00:39:33.877 回答
-1

numberBigNumber被视为两种数据类型,Typescript 不知道允许这种加法操作。所以在你的情况下,a可能是 anumber并且b可能是 a BigNumber

如果您确定这些可以添加在一起,您可以// @ts-ignore I'm sure this adds在显示错误的注释上方的行中使用。

于 2021-12-24T00:23:00.263 回答