2015-10-19 4 views
1

Я пробовал с этим, но он не работает. Foo - это просто испытание того, что работает. Бар - настоящая попытка, он должен получать любой новый тип, но подклассы объекта недействительны для этой цели.Как указать любой новый тип в TypeScript?

class A { 

} 
class B { 
    public Foo(newable: typeof A):void { 

    } 
    public Bar(newable: typeof Object):void { 

    } 
} 

var b = new B(); 
b.Foo(A); 
b.Bar(A); // <- error here 

ответ

3

Вы можете использовать { new(...args: any[]): any; }, чтобы любой объект с помощью конструктора с любыми аргументами.

class A { 

} 

class B { 
    public Foo(newable: typeof A):void { 

    } 

    public Bar(newable: { new(...args: any[]): any; }):void { 

    } 
} 

var b = new B(); 
b.Foo(A); 
b.Bar(A); // no error 
b.Bar({}); // error 
+0

Awesome! спасибо –