我想传递类的类型信息,并提示编译器给定的参数不是类的实例,而是类的定义。我怎样才能做到这一点?
import * as Routes from '../routes';
import * as Entities from '../entities';
export class RouteManager {
public router = Router();
private connection = getConnectionManager().get();
constructor() {
this.addRoute(Routes.VideoRoute, Entities.Video);
}
addRoute(routeClass: AbstractRoute<AbstractEntity>, entity: AbstractEntity): void {
const instance = new routeClass(entity, this.connection.getRepository(entity))
this.router.get(instance.route, instance.find);
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,编译器抱怨该new routeClass(entity, this.connection.getRepository(entity))行,因为它认为这routeClass是该行的实例,AbstractRoute<AbstractEntity>而不是其导出的类定义。
我尝试使用,AbstractRoute<AbstractEntity>.constructor但是Typescript似乎不知道这种结构。
这个语法看起来有点奇怪。基本上,您定义的签名使用new(...args: any[]) => T。当然,你可以通过更换更严格的T与你的类和args与constructor签名。
我建议这样的事情:
class Foo {}
type Constructor<T> = new(...args: any[]) => T;
function createFoo(thing: Constructor<Foo>) { return new thing(); }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1016 次 |
| 最近记录: |