使用装饰器的Typescript mixin类

时间:2017-04-16 12:44:40

标签: typescript

我一直在玩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'

1 个答案:

答案 0 :(得分:1)

目前,类别装饰器仍然不支持打字稿。

您可以在此处找到一个未解决的问题:https://github.com/Microsoft/TypeScript/issues/4881