2025-4
目录
2
Booleans Are a Trap 布尔值是一个陷阱
假设一个门有开关和上锁 2 对属性,你可能构建下面这个一个类
js
class Door {
isLocked: Boolean;
isOpen: Boolean;
}
门的实际情况只有 3 个,即 门关和锁
,门关但不锁
,门开
。但是设置 2 个属性会导致一个意外的状态即门开并且锁
,很显然我们不需要这个状态,因此我们需要通过逻辑代码来避免这种以外。
当只有 2 对属性的时候可能还可以通过逻辑代码来避免这种意外的状态,但是随着属性的增加,状态数量会成指数上升,你需要写的逻辑代码也会越来越复杂
作者建议使用枚举类型来避免这种意外的状态
js
enum DoorState {
LOCKED,
CLOSED,
OPEN,
}