"a" | "b" 字面量类型
最后更新:2026-10-22
"a" | "b" 字面量类型
字面量类型把"值本身"当作类型:"up"、1、true 都是类型。单独用价值有限,与联合组合后可以精确限定取值范围。
| 分组 | 类型组合 |
|---|---|
| 类型 | 类型 |
| 严格模式 | 不需要 |
ℹ️ 说明 编辑器将 TypeScript 转译为 JavaScript 后运行(不做类型检查);类型检查结果见示例 Output。
📝 语法
type Size = "small" | "medium" | "large";
let size: Size = "medium";
const mode = "dark"; // const 推断为字面量类型 "dark"
let level = 3; // let 推断为宽类型 number
⚙️ 参数
| "a" | 42 | true | 三种原始字面量都能成为类型:"a"、42、true |
|---|---|
| as const | 把对象/数组的属性锁成字面量类型,常用于配置常量 |
返回值:无返回值——字面量类型是纯类型层概念,编译后消失。
▶ 示例
修改下面的代码,点击试一试查看转译运行结果:
输出:
up x2 right x1
(转译后运行输出;move("Up", 1) 会得到编译错误——字面量必须完全一致,大小写敏感)
💡 要点
ℹ️ 说明 let 推断为宽类型(string),const 推断为字面量类型("dark")——这是字面量类型最常见的来源。
💡 提示 配置常量对象加 as const,属性全部锁成字面量类型,能直接喂给函数参数的字面量联合。
⚠️ 注意 字面量匹配是大小写敏感的精确比较:"Up" 不能赋给 "up",前后空格也不行。
🏷️ 相关类型组合
💡 相关案例
更多案例即将上线。
📚 相关教程
❓ 常见问题
Q 为什么 const 得到字面量类型而 let 得到 string?
A const 变量永远不会再变,TS 就用最精确的"值类型";let 之后可能赋别的字符串,所以放宽成 string。需要窄类型时可用注解或 as const。
Q as const 是干什么的?
A 断言整个字面量为最深只读:属性全部变成字面量类型且不可写。{ method: "GET" } 推断为 { method: string },加 as const 后 method 就是 "GET"。
Q 字面量联合和枚举怎么取舍?
A 字面量联合零运行时成本、与普通字符串无缝互操作;枚举提供命名空间和反向映射。大多数业务取值场景字面量联合就够了(详见 enum 条目)。