Определение экземпляров нескольких типов - PullRequest
0 голосов
/ 05 мая 2020

Мне нужно определить let sideCalendar , который возвращает следующий журнал консоли:

enter image description here

В настоящее время у меня есть интерфейс:

interface ICalendar{
  month: moment.Moment;
  calendar?: {
    [key: number]: moment.Moment | null;
    'firstDay': moment.Moment;
    'lastDay': moment.Moment;
  };
}

Как я могу определить несколько подобных массивов? Пока описан только один экземпляр:

    [key: number]: moment.Moment | null;

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Поскольку пронумерованные ключи будут содержать массив, в котором есть moment.Moment или null, вам нужно будет определить его как [key: number]: Array<moment.Moment | null>:

interface ICalendar {
  month: moment.Moment;
  calendar?: {
    [key: number]: Array<moment.Moment | null>;
    'firstDay': moment.Moment;
    'lastDay': moment.Moment;
  };
}
0 голосов
/ 05 мая 2020

Если вы попробуете то, что пытаетесь сделать, TypeScript сузит тип значения Record до общего. Например:

type A = Record<number, string | number>;
type B = Record<number, boolean | string>;
type C = A & B;

const data: C = {
    42: 'foo'
};

Общий тип между A и B - string, поэтому значение свойства 42 также должно быть string.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...