網站搜尋

Typescript:在算術運算中使用布林類型


我想在 TypeScript 中將布林變量用於算術運算,但編譯器報錯:"算術運算的右側必須是類型 'any'、'number' 或枚舉類型。"

class User {
    hasFoo: boolean;
};
let user = new User();
let amount : number = BASE + FOO_FACTOR * user.hasFoo

我知道我可以將我的布林值轉換為類型 <any>,而且它是可行的:

let amount : number = BASE + FOO_FACTOR * <any>user.hasFoo

但是這是最好的解決方案嗎?

答案#1

TypeScript 希望你在編譯時強制類型。你的程式碼在運行時能夠運作,是因為原生 JavaScript 的內部弱型別特性。

避免使用 any 轉型,而是將 boolean 轉換為實際的 number。

有多種選擇,例如:

let number: number = user.hasFoo ? 1 : 0

或:

let number: number = Number(user.hasFoo)