我一直在玩mixin课程,并且很难理解他们与装饰师的互动方式。
当我使用装饰器时,我会收到一条消息:“Property' _tag'类型OriginalClass上不存在,但如果我创建一个中间类似乎没有问题。这是应该做的方式还是有另一种方法来做到这一点?
function mix<T extends Constructor<{}>>(Base: T) {
return class extends Base {
_tag: string;
constructor(...args: any[]) {
super(...args);
this._tag = "";
}
}
}
@mix
class OriginalClass {
constructor() {
//do something
}
}
const a = new OriginalClass();
// Why does this not work
a._tag = 'hi'
// But this does work
class NewClass extends mix(OriginalClass){};
b = new NewClass()
b._.tag = 'hi'
答案 0 :(得分:1)
目前,类别装饰器仍然不支持打字稿。
您可以在此处找到一个未解决的问题:https://github.com/Microsoft/TypeScript/issues/4881。