Как создать безопасность типов для последовательных методов многих ко многим ассоциациям, таких как (setModels и т. Д.)

#node.js #sequelize.js

#node.js #sequelize.js

Вопрос:

У меня есть модель

модель / Опекун

 import { BuildOptions, DataTypes, Model, Sequelize } from 'sequelize';
export interface CaregiverAttributes {
  caregiver_id: number | string;
  caregiver_notification_preferences?: string;
}
export interface CaregiverModel
  extends Model<CaregiverAttributes>,
    CaregiverAttributes {}

export type CaregiverStatic = typeof Model amp; {
  new (values?: object, options?: BuildOptions): CaregiverModel;
};

export function CaregiverFactory(sequelize: Sequelize): CaregiverStatic {
  return <CaregiverStatic>sequelize.define(
    'caregiver',
    {
      caregiver_id: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        allowNull: false,
        primaryKey: true,
      },
      caregiver_notification_preferences: {
        type: DataTypes.STRING,
        allowNull: true,
      },
    },
    {
      timestamps: false,
      underscored: true,
      tableName: 'caregiver',
    }
  );
}

  

и ассоциации

 Caregiver.belongsToMany(Patient, {
  foreignKey: 'caregiver_id',
  targetKey: 'caregiver_id',
  as: 'Patient',
});

  

Но когда я пытаюсь получить или установить

 const patients = await caregiver.getPatients();
  

У меня ошибка: свойство getPatients не существует для типа CaregiverModel

Может быть, у кого-то такая же проблема?

Обратите внимание: с // @ts-ignore работает нормально.

Комментарии:

1. Я провел небольшое расследование и нашел статью об этом ( vivacitylabs.com/setup-typescript-sequelize ).

Ответ №1:

Решаемая Найти эту статью https://vivacitylabs.com/setup-typescript-sequelize / , где это описано.