前端知库

TypeScript 新装饰器与 experimentalDecorators 有何区别?

参考答案

TypeScript 5.0 引入了新装饰器语义的支持;旧 experimentalDecorators 则对应较早的实验方案。两者在调用参数、类型检查和输出上有区别,现有装饰器库不能默认直接切换。

新方案通常以被装饰值和上下文对象参与工作,上下文提供名称、种类、初始化钩子等信息。TS 5.0 文档明确说明,这套方案不兼容旧 emitDecoratorMetadata,也不允许参数装饰器;不能把依赖旧反射元数据的注入框架直接按新语义运行。

选型时先核对框架、编译器和构建链使用哪套方案,再讨论迁移。这里的“新”指该文档介绍的语义,不表示所有浏览器都已原生支持相同语法,也不应把后续独立的元数据提案与旧编译选项混为一谈。