我试过了,但是不起作用。Foo只是一个测试。Bar才是真实的的尝试,它应该接收任何新的类型,但是Object的子类对于这个目的是无效的。
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
我试过了,但是不起作用。Foo只是一个测试。Bar才是真实的的尝试,它应该接收任何新的类型,但是Object的子类对于这个目的是无效的。
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条答案
按热度按时间hiz5n14c1#
可以使用
{ new(...args: any[]): any; }
来允许任何对象具有带任何参数的构造函数。wqsoz72f2#
如果只想强制某些新对象,可以指定构造函数的返回类型
6psbrbz93#
使用TypeScript的
Construct Signature
功能,可以创建一个新函数。你可以在操场上试试。
这样做有一些缺点:
Constructor
类型的参数与函数的参数匹配。否则,将产生意外错误。