我有一個計算多邊形面積的函式,這是我的函式
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' 和 'number | math.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;
}
如何解決這個問題,以便我可以在打字稿類中使用我的函式?
uj5u.com熱心網友回復:
您不能對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 可能需要調整其型別。
看:
- https://mathjs.org/docs/reference/functions/divide.html
- https://mathjs.org/docs/reference/functions/add.html
uj5u.com熱心網友回復:
number和BigNumber被視為兩種資料型別,Typescript 不知道允許這種加法操作。因此,在您的情況下,a可能是 anumber并且b可能是BigNumber.
如果您確定可以將這些添加在一起,您可以// @ts-ignore I'm sure this adds在顯示錯誤的注釋上方的行上使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/392708.html
標籤:javascript 打字稿 数学
上一篇:包裝匿名函式的引數或結果
下一篇:按一級或多級嵌套分組
