2015-10-19 53 views
1

我试过这个,但它不起作用。 Foo只是对什么起作用的测试。 Bar是真正的尝试,它应该接收任何新类型,但是Object的子类不适用于此目的。如何在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

太棒了!谢谢 –

相关问题