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 的诊断信息。