我想传递类的类型信息,暗示编译器给定的参数不是类的实例而是类定义 . 我怎样才能做到这一点?
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);
}
}
这里编译器抱怨 new routeClass(entity, this.connection.getRepository(entity))
行,因为它认为 routeClass
是 AbstractRoute<AbstractEntity>
的实例,而不是它的导出类定义 .
我尝试过使用 AbstractRoute<AbstractEntity>.constructor
但是Typescript似乎不知道这个结构 .
1 回答
这个语法看起来有点奇怪 . 基本上,您定义了一个使用
new(...args: any[]) => T
之类的签名 . 你当然可以通过用你的类替换T
和使用constructor
签名的args
来更严格 .我会推荐这样的东西: