TypeScript 5.x 新特性全景解析:从 5.0 到 5.9
TypeScript 5 系列持续演进,带来更强大的类型系统和更流畅的开发体验。本文全面解析 5.x 版本的核心新特性。
🚀 TypeScript 5.0 重大更新
1. 装饰器(Decorators)正式稳定
function logged(value: any, context: ClassAccessorDecoratorContext) {
return {
get() {
console.log('Getting value...')
return value
}
}
}
class Example {
@logged accessor name = 'TypeScript'
}
2. const 类型参数
// 之前:需要 as const
const arr = [1, 2, 3] as const
// 现在:const 类型参数
function foo<const T>(arg: T) {
// T 被推断为只读元组类型
}
foo([1, 2, 3]) // T 推断为 readonly [1, 2, 3]
✨ TypeScript 5.5 新特性
1. 推断类型谓词(Inferred Type Predicates)
// 之前:需要显式标注类型谓词
function isString(value: unknown): value is string {
return typeof value === 'string'
}
// 现在:自动推断
function isString(value: unknown) {
return typeof value === 'string'
}
// 返回类型自动推断为 value is string
2. 常量索引访问的控制流收窄
const key = 'name'
if (obj[key]) {
// 现在可以正确收窄
obj[key].toUpperCase()
}
🔥 TypeScript 5.9 新特性(2025 年 8 月)
1. import defer — 模块延迟执行
import defer * as heavyModule from './heavy-module'
// 模块在首次访问时才加载
function onClick() {
heavyModule.doSomething() // 此时才加载
}
2. node20 模式锁定
新增 Node.js 20 的类型定义锁定模式,提供更好的兼容性。
📌 实用技巧
1. 满意类型(Satisfies)
type User = {
name: string
age: number
}
const user = {
name: 'John',
age: 25,
extra: true // 错误:不满足 User 类型
} satisfies User
2. 内置工具类型
// Awaited:递归展开 Promise
type T = Awaited<Promise<Promise<number>>> // number
// Parameters:提取函数参数类型
type T = Parameters<(a: string, b: number) => void> // [string, number]
🏆 升级建议
- 使用
strict: true开启所有严格检查 - 利用
satisfies替代类型注解,保留字面量推断 - 使用项目引用(Project References)管理大型代码库
- 定期更新 TypeScript 版本,获取最新类型推导优化
总结:TypeScript 5.x 系列在类型安全、开发体验和性能方面持续进步。特别是装饰器稳定、import defer 等特性,让 TypeScript 在企业级项目中更加强大。
本文整理自 TypeScript 官方发布说明及技术社区热门教程