typescript - 如何为打字稿泛型指定“this”
问题描述
我正在尝试制作一个实用函数来自动为提供给它的模型生成分页,如下所示:
import { Model } from 'sequelize-typescript';
async function getPagination<T extends typeof Model>(model: T) {
const page = 1;
const limit = 10;
const data = await model.findAndCountAll({
limit,
offset: (page - 1) * limit,
});
// Create the pagination object
const pagination = {}; // some meaningful object
return {
data,
pagination
};
}
但是打字稿给了我这个错误:
The 'this' context of type 'T' is not assignable to method's 'this' of type 'ModelStatic<Model<unknown, unknown>>'. Type 'typeof Model' is not assignable to type 'ModelStatic<Model<unknown, unknown>>'. Cannot assign an abstract constructor type to a non-abstract constructor type.
顺便说一句,我的模型是这样定义的:
import { Table, Column, PrimaryKey, AutoIncrement, Model } from 'sequelize-typescript'
@Table
class CustomModel extends Model implements CustomModel {
@PrimaryKey
@AutoIncrement
@Column
id!: number;
}
解决方案
我终于让它工作了,实际上我不得不传递泛型,而不是使用泛型本身,它将模型扩展到 ModelCtor,这就是在 sequelize 中完成的事情,我猜。
async function getPagination<T extends Model>(model: ModelCtor<T>)
推荐阅读
- .net - 反序列化时如何配置 ServiceStack.Text 以使用 EnumMember?
- javascript - 未定义包含功能的 React 道具
- bigbluebutton - BigBlueButton : 推荐的系统要求
- windows - Internet Explorer 11 的自动完成表单,从一台计算机复制到另一台计算机
- ios - 我的 .txt 文件在加载文本时会滞后 - 保存到 Firebase 并从那里加载可以加快速度吗?
- mongodb - MongoDb 分片和唯一约束
- powerbi - PowerBI 门户中 Cosmos DB 的数据刷新
- json - jq:从多个对象中查找唯一键
- php - 上个月,下个月和月份,年份在日历 PHP 中不起作用
- javascript - 获取奇怪的未捕获类型错误:this._saveFile 不是 es6 的函数