You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中如何判断可选布尔值是否已定义并设置默认值?

TypeScript中判断可选布尔值是否为true/false而非undefined的正确方式

你的现有代码存在逻辑错误:当config.myBool传入false时,if (config.myBool)会将其判定为假值,从而执行else分支把this.myBool设为true,这不符合你"false时使用该值"的需求。

要正确区分false和undefined,可以用以下几种方式实现:

方式一:明确判断是否为undefined

class MyTest {
    private myBool: boolean;

    constructor(config: { myBool?: boolean }) {
        if (config.myBool !== undefined) {
            this.myBool = config.myBool;
        } else {
            this.myBool = true;
        }
    }
}

方式二:使用空值合并运算符(??)

这是最简洁的写法,??运算符仅在左侧值为undefined或null时,才返回右侧的默认值:

class MyTest {
    private myBool: boolean;

    constructor(config: { myBool?: boolean }) {
        this.myBool = config.myBool ?? true;
    }
}

方式三:解构参数结合三元表达式

如果习惯解构参数,可以这么写:

class MyTest {
    private myBool: boolean;

    constructor({ myBool }: { myBool?: boolean }) {
        this.myBool = myBool !== undefined ? myBool : true;
    }
}

核心逻辑都是明确区分false和undefined,避免把false当成"未传入"的情况处理。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:00:51