在大多数指南,聊天,教程等中...键入续集模型的推荐方法是使用以下代码:
export interface IUserInstance extends Sequelize.Instance<IUserAttributes>, IUserAttributes {
prototype: {
verifyPassword: (password: string) => boolean;
};
}
这里的关键部分是 Sequelize.Instance<
,在续集v5 中,您会看到错误:
Namespace '".../node_modules/sequelize/types/index"' has no exported member 'Instance'.
我已经环顾四周,但没有遇到解决方案。
**查看本指南,"使用semelize.define"部分http://docs.sequesleizejs.com/manual/typescript
似乎没有一种清晰的方式与使用Define和Typescript合作。
任何帮助/建议将不胜感激。
参考:
- https://github.com/definitelytyped/definitelytyped/issues/35013
- https://github.com/sequelize/sequelize/sissues/9760#issuecomment-472905585
- https://vivacitacelabs.com/setup-typescript-sequelize/
问候,emir
我经常搜索了解决此问题的解决方案,并与以下内容一起使用:
import sequelizeInstance from '..';
import { Model, DataTypes } from 'sequelize';
const config = {
tableName: 'User',
sequelize: sequelizeInstance,
};
class User extends Model {
id!: number;
firstName!: string;
lastName!: string;
/* some other properties*/
verifyPassword: (password: string) => boolean;
public readonly createdAt!: Date;
public readonly updatedAt!: Date;
}
User.init(
{
id: {
primaryKey: true,
type: DataTypes.INTEGER,
autoIncrement: true,
},
firstName: {
type: DataTypes.STRING,
},
lastName: {
type: DataTypes.STRING,
}
},
config,
);
User.prototype.verifyPassword = function(password: string) {
/* code here ... */
};
export default User;