TS 5.0 ~ 5.1 新特性
约 276 字小于 1 分钟
布欧-Lewyon
2026-05-16
首页 › TypeScript › TS 5.x 新特性 › TS 5.0 ~ 5.1
TS 5.0
装饰器正式支持
TS 5.0 实现了 ES 装饰器标准(Stage 3),不再需要 experimentalDecorators 选项。
function logged(value: any, context: ClassMethodDecoratorContext) {
const original = value;
return function(this: any, ...args: any[]) {
console.log(`调用 ${String(context.name)}`);
return original.apply(this, args);
};
}
class Service {
@logged
doSomething() { /* ... */ }
}const 类型参数
// 类型参数可以声明为 const,推导出字面量类型而非宽泛类型
function getConfig<const T extends readonly string[]>(keys: T): { [K in T[number]]: string } {
return {} as any;
}
const config = getConfig(['name', 'age']);
// config 类型:{ name: string; age: string }
// 如果不加 const,TS 会推断 keys 为 string[]--moduleResolution bundler
// tsconfig.json
{
"compilerOptions": {
"moduleResolution": "bundler" // 模拟 Vite/Webpack 的解析规则
}
}TS 5.1
undefined 在 in 守卫中收窄
interface User { name: string };
function process(user: User | undefined) {
if ('name' in user) {
user.name; // ✅ 5.1 中收窄为 User,之前是 never
}
}@link JSDoc 标签
/**
* 处理用户数据
* @link https://docs.example.com/user
* @see {@link processOrder}
*/
function processUser() {}小结
| 版本 | 关键特性 |
|---|---|
| 5.0 | 标准装饰器、const 类型参数、bundler 模块解析 |
| 5.1 | in 守卫改进、@link JSDoc |
