Поле Typescript не может быть присвоено типу 'never'. Что мне не хватает, чтобы сделать его типом даты? - PullRequest
0 голосов
/ 11 июля 2019

Я создаю свою пользовательскую схему и получаю следующую ошибку при попытке присвоить значение полю registrationStatusTimeStamps в функции @pre<save>, а ts постоянно говорит, что это of type never.

Я пробовал обо всем, но я продолжаю жаловаться TS и поле не сохраняется. Я предполагаю, что желаемый результат очевиден, за исключением полей в объекте со временем

Что мне не хватает?

error TS2322: Type 'Date' is not assignable to type 'never

Требуемый сохраненный вывод

{
registrationStatusTimeStamps: {
    initial: 2018-10-18 14:29:07.000,
    personalDetails: 2018-10-18 14:29:07.000,
    selectBroker: 2018-10-18 14:29:07.000,
    appropriatenessQuestionnaire: 2018-10-18 14:29:07.000,
    documentCheck: 2018-10-18 14:29:07.000,
    completed: 2018-10-18 14:29:07.000,
}
}

Код

export enum RegistrationStatuses {
    initial = "initial",
    personalDetails = "personalDetails",
    selectBroker = "selectBroker",
    appropriatenessQuestionnaire = "appropriatenessQuestionnaire",
    documentCheck = "documentCheck",
    completed = "completed"
};
export type RegistrationStatus = keyof typeof RegistrationStatuses;


export type RegistrationStatus = keyof typeof RegistrationStatuses;
@pre<User>("save", function(next: HookNextFunction) {
  // Update registration timestamps
  if (this.isModified("registrationStatus")) {
    if (!this.registrationStatusTimeStamps) {
      this.registrationStatusTimeStamps[this.registrationStatus] = new Date();
    } else {
      this.registrationStatusTimeStamps[this.registrationStatus] = new Date();
    }
  }
  return next();
})
export class User extends Typegoose {
  @prop({
    default: {},
    _id: false,
  })
  public registrationStatusTimeStamps: { [k in RegistrationStatuses]?: Date };
...