gpt4 book ai didi

typescript - Sequelize-Typescript typeof 模型

转载 作者:行者123 更新时间:2023-12-02 02:45:47 25 4
gpt4 key购买 nike

我正在尝试创建一个基本的 crud 服务,该服务采用 Sequelize 模型并为其创建所有基本 API,所以我这样做了:

export class RepositoryService<T extends Model<T>> {
constructor(protected model: typeof Model) {
}
public async getMany(
query: RequestParamsParsed = {},
options: RestfulOptions = {},
): Promise<T[]> {
return this.model.findAll();
}
}

我收到以下错误:
The 'this' context of type 'typeof Model' is not assignable to method's 'this' of type 'new () => Model<Model<any>>'.
Cannot assign an abstract constructor type to a non-abstract constructor type.

这是因为 seqeulize-typescript 中的这一行包裹:
static findAll<T extends Model<T>>(this: (new () => T), options?: IFindOptions<T>): Promise<T[]>;

我对 Typescript 比较陌生所以如果有人能告诉我 this: (new () => T)是什么意思吗?在 findAll功能以及如何解决这个问题。

最佳答案

使用 sequelize-typescript 时也遇到此错误图书馆。

您可以首先定义这些助手类型:

import { Model } from "sequelize-typescript";

// Type `ModelType` would basically wrap & satisfy the 'this' context of any sequelize helper methods
type Constructor<T> = new (...args: any[]) => T;
type ModelType<T extends Model<T>> = Constructor<T> & typeof Model;

然后,将它与您的代码一起使用:
export class RepositoryService<T extends Model<T>> {
constructor(protected model: ModelType<T>) {}

public async getMany(
query: RequestParamsParsed = {},
options: RestfulOptions = {},
): Promise<T[]> {
return this.model.findAll();
}
}

希望这可以帮助。

关于typescript - Sequelize-Typescript typeof 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55166230/

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