2016-10-31 1 views

답변

4

당신이 바로 클래스 생성자를 반환하는 제네릭을 사용할 수 있습니다

const mixin = (traits: any) => 
    <T>(baseClass: { new(): T }) => { 
     Object.assign(baseClass.prototype, traits); 
     return baseClass; 
    } 

class A {} 

let o = mixin({})(A); // typeof o is new() => A 
let a = new o(); // typeof a is A 

(code in playground)

+0

덕분에, 그 작동합니다. 그러나 나는 아직도 어떤 문제에 직면하고있다 :'mixin (Speaker) (class {})'는 작동하지만'mixin (Speaker) (class는 Mammal {}을 확장)'하지 않는다. 내가 빠진 것이 있습니까? – kube

+0

죄송합니다. 나쁜 일을하고 계셨습니다. 완벽하게 작동합니다. 감사. – kube

관련 문제