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
相关产品推荐
相关产品推荐

