TypeScript类型推断黑科技:const断言和as const
🧑🏫 作者:全栈老李
📅 更新时间:2025 年 5 月
🧑💻 适合人群:前端初学者、进阶开发者
🚀 版权:本文由全栈老李原创,转载请注明出处。
今天咱们聊聊TypeScript里两个特别有意思的类型推断特性——const
断言和as const
。这俩兄弟看起来很像,但用法上还是有些微妙的区别。作为全栈老李的老粉都知道,我最喜欢研究这些类型系统的"黑科技"了。
先说说为什么需要这玩意儿。TypeScript的类型系统很强大,但有时候它太"聪明"反而会给我们带来困扰。比如:
// 全栈老李提示:注意这里的类型推断
let name = '全栈老李' // 类型推断为string
const age = 30 // 类型推断为30
发现没?用let
声明时,TypeScript会把变量类型推断为宽泛的string
,而用const
声明时,它会推断为具体的字面量类型30
。这是因为const
声明的变量不可重新赋值,TypeScript可以确定它的值永远不会变。
但有时候我们就是想告诉TypeScript:"老兄,这个值就是固定的,别给我推断成宽泛类型!"这时候就该const
断言和as const
出场了。
const断言:冻结类型推断
const
断言的语法是在字面量后面加as const
:
// 全栈老李示例:const断言基础用法
let name = '全栈老李' as const // 类型现在是"全栈老李"而不是string
const person = {
name: '全栈老李',
age: 30
} as const
加上as const
后,