跳转内容

装饰器工厂

unioc内部提供了一些装饰器工厂,用来创建同时兼容legacystage3两种环境的装饰器。

两种环境的区别

2023年1月,TypeScript 4.9 版本正式发布,首次将TC39 stage 3的装饰器引入到了TypeScript中。但是,目前大多数的IoC框架仍然停留在legacy阶段,仍然未兼容stage3的装饰器。在当下这个时间点,unioc为了推动TS社区发展,内部提供一些装饰器工厂函数,用于创建同时兼容legacystage3的装饰器,并且提供一系列的metadata元数据设置/扫描器以及一系列与emitDecoratorMetadata(即reflect-metadata包)兼容的API。

NOTE

相关API存放于unioc/meta以及unioc/decorator并支持tree-shaking,哪怕您不使用unioc的核心容器API,也可以使用这些API去创建装饰器,这样您的装饰器会变得兼容性更强,允许在legacystage3两种环境下使用🎉

这可能对一些装饰器库开发者来说会非常有用,比如利用装饰器进行一些数据校验的库等。

defineClassDecorator

用于定义一个统一的类装饰器。

ts
import { 
defineClassDecorator
} from 'unioc/decorator'
function
MyClassDecorator
() {
return
defineClassDecorator
({
onClassDecorate
(
target
) {
// some your logic 🪄 } }) } @
MyClassDecorator
()
class
MyClass
{}

贡献者

页面历史