如何使用装饰器向类添加新属性或方法?



基本上和这个问题一样。但还有几个要求。

  1. 如何使用属性装饰器而不是类装饰器向添加新的属性/方法?
  2. 关键是 -如何以类型安全的方式自动执行此操作?TypeScript 可以支持推断添加的键吗?在前面的示例中,我们必须手动添加类型信息。TypeScript 可以推断出它吗?

举个例子:

class HeaderComponent extends Vue {
// @Stream$ should add key teanantId$ to class?
@Stream$((store) => store.urlState.tenantId)
public tenantId: number;
}

这是它应该如何工作:

const a = new HeaderComponent();
// works
a.tenant;
// CAN THIS WORK?
a.tenantId$;

TypeScript 目前不支持类装饰器突变。

修饰类需要合并声明来显式定义新属性:

interface HeaderComponent {
tenantId$: Observable<number>;
}
class HeaderComponent extends Vue {
@Stream$((store) => store.urlState.tenantId)
public tenantId: number;
}

由于tenantId$属性名称是运行时计算的结果,因此将来不可能进行推理。

最新更新