字面量类型
字面量类型约束了什么?
- 含义: 类型本身就是一个具体值, 变量只能取该值;
- 语法: 直接写字面量, 如
"click"; - 组合: 用联合把若干字面量组成有限取值集合;
type EventNames = "click" | "scroll" | "mousemove";
const handleEvent = (ele: Element, event: EventNames) => {};
handleEvent(document.getElementById("hello"), "scroll"); // 通过
handleEvent(document.getElementById("world"), "dblclick"); // 报错, "dblclick" 不在取值范围内
字面量类型适合什么场景?
- 有限取值: 事件名、状态、方向、平台等取值封闭的字段;
- 好处: 把非法取值变成编译期错误, 并在编辑器里给出取值提示;
- 配合: 与联合类型、交叉类型一起描述对象形状;
- 相关: 需要常量对象而不是类型时, 用
as const固定字面量, 见 枚举;