【发布时间】:2020-12-08 04:10:41
【问题描述】:
我正在处理一个希望迁移到 Typescript 的遗留项目。它具有以下格式定义的模型:
import Sequelize from "sequelize";
class MyModel extends Sequelize.Model {
public static init(sequelize) {
const attributes = {
userId: {
type: Sequelize.INTEGER,
allowNull: false,
field: "user_id"
},
createdAt: {
type: Sequelize.DATE,
field: "created_at"
}
};
super.init(attributes, {
sequelize
});
}
}
export default MyModel;
我想将它们转换为打字稿,而不必为消费者更改界面。我的意思是我想扩展 Sequelize.Model 并且我想定义一个 public static init 方法。
我在Sequelize.Model 上从 Typescript 收到以下错误
Type 'Model<any, any>' is not a constructor function type.
我所做的所有研究都指向使用Sequelize.define 来定义模型。
这是一个遗留项目,我不想为了符合类型而重写所有模型,所以我想知道如何正确扩展Sequelize.Model?
谢谢
【问题讨论】:
-
它在运行时有效吗?你使用的是哪个版本的
sequelize? -
@KarolMajewski - 当它是纯 JS 时,它工作得很好。当它是
.ts文件时,它不会编译,因此我无法在运行时对其进行测试。我正在使用sequelize4.42.0 和@types/sequelize4.27.33