跳到主要内容

字面量类型

字面量类型约束了什么?​

  • 含义: 类型本身就是一个具体值, 变量只能取该值;
  • 语法: 直接写字面量, 如 "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 固定字面量, 见 枚举;