首页 > 解决方案 > 在打字稿中定义对象的类型

问题描述

我有以下对象,它将为我的一个组件输入

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 }/>

在打字稿中,我们将如何定义提醒组件内的值类型?我尝试如下

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;
 };
}

有没有更好的方法来定义它,在打字稿中?而不是重复天的名称我们不能使用Day类型并在一行中定义提醒吗?因为关键是一天有没有办法将其定义如下

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

标签: typescript-typings

解决方案


推荐阅读