Определите тип объекта в typescript

#typescript-typings

Вопрос:

У меня есть следующий объект, который будет вводиться для одного из моих компонентов

 export const reminders = {
 reminder_per_package: 3,
 interval: 24,
  reminders: {
    monday: { active: true, time: "16:30" },
    tuesday: { active: false, time: "17:00" },
    wednesday: { active: true, time: "18:00" },
    thursday: { active: false, time: "11:00" },
    friday: { active: false, time: "12:00" },
  },
};
 

как следует

 <Reminder values={reminders }/>
 

в typescript как мы определим тип значений внутри компонента напоминания? Я попытался сделать следующее

 export type Day = "monday" | "tuesday" | "wednesday" | "thursday" | "friday";
export type DayReminder = {
  active: boolean;
  time: string;
};

export interface reminders {
  reminder_per_package: number;
  interval: number;
  reminders: {
    monday: DayReminder;
    tuesday: DayReminder;
    wednesday: DayReminder;
    thursday: DayReminder;
    friday: DayReminder;
 };
}
 

Есть ли лучший способ определить это в машинописном тексте? Вместо того, чтобы повторять названия дней, не можем ли мы использовать тип дня и определить напоминание в одной строке? Поскольку ключом будет один из дней, есть ли способ определить его следующим образом

 export interface IReminder {
   reminder_per_package: number;
   interval: number;
   reminders: {
    [Day]: DayReminder; // it gives error on [Day]
   };
}
 

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

1. Зачем строгое сопоставление с одним напоминанием в день? Рассматривали ли вы массив/список {day, active, time} ?