基本上和这个问题一样。但还有几个要求。
- 如何使用属性装饰器而不是类装饰器向类添加新的属性/方法?
- 关键是 -如何以类型安全的方式自动执行此操作?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$
属性名称是运行时计算的结果,因此将来不可能进行推理。