"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 条目)。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏