装饰器
Nub 如何在原生 Node 上运行旧版 TypeScript 装饰器及其发射的设计类型元数据——NestJS、TypeORM 和 Angular 依赖注入生态系统所编写的形式。
在 tsconfig.json 中设置 experimentalDecorators: true,装饰类无需构建步骤即可运行。这是 DI / ORM 生态系统(NestJS、TypeORM、Angular)所编写的旧版装饰器形式。
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}@Entity()
class Account {
@PrimaryGeneratedColumn()
id: number;
@Column()
balance: number;
}emitDecoratorMetadata
当同时设置 emitDecoratorMetadata 时,Nub 发射 DI 容器读取用于构造函数参数类型推断的 Reflect.metadata(...) 调用。发射的代码引用 Reflect.metadata,所以你需要自行安装和导入 reflect-metadata,与纯 TypeScript 上完全一样——Nub 不会自动注入它。
Stage 3 装饰器
Stage 3 装饰器(TypeScript 5 在两个标志都未设置时的默认值)不受支持:该转换是 oxc 的上游缺口,所以 Nub 拒绝 Stage 3 形态的装饰器语法,并给出指向 experimentalDecorators: true 的诊断信息。