2015-10-19 61 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

太棒了!謝謝 –

相關問題