gpt4 book ai didi

typescript - 如何在 Typescript 中将类定义指定为参数类型

转载 作者:搜寻专家 更新时间:2023-10-30 22:06:44 27 4
gpt4 key购买 nike

我想传递类的类型信息,并提示编译器给定的参数不是类的实例而是类定义。我该怎么做?

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))行,因为它认为 routeClassAbstractRoute<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(); }

关于typescript - 如何在 Typescript 中将类定义指定为参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43606912/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com