Typescript mixin类与装饰器

Typescript mixin类与装饰器

问题描述:

我一直在玩mixin类,并且一直难以理解它们如何与装饰器进行交互。Typescript mixin类与装饰器

当我使用一个装饰我相处的'财产“_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' 

目前,类装饰器在打字稿中仍不受支持。

有一个开放的问题,您可以按照这里:https://github.com/Microsoft/TypeScript/issues/4881

+0

谢谢,希望我看到这个问题早一点 - 是相当夸大对混入类。 – noveyak