использование оператора распространения / отдыха в функции карты вызывает ошибку TS2700 - PullRequest
0 голосов
/ 05 августа 2020

Я хочу изменить значения 2 элементов в массиве объектов, сохраняя при этом другие значения в данных. Функция работает, когда я тестирую свое приложение ioni c, но получаю эту ужасную ошибку, которая обычно означает, что оно не будет собираться позже:

[ng] Time: 1878ms
[ng] : Compiled successfully.
[ng]     
[ng]     ERROR in src/app/pages/admin/admin.page.ts:46:66 - error TS2700: Rest types may only be created from object types.
[ng]     
[ng]     46       this.eventSource = [...list].map(({ startTime, endTime, ...list }) => {
[ng]                                                                         ~~~~  

Я просмотрел другие сообщения об этом , но мне это не помогло. Может кто-нибудь, пожалуйста, объясните, что мне здесь не хватает?

Мой код:

loadDbEVents() {
// get the list of appointments from the db
this.api.readAll('appts').subscribe((list: []) => {
  // tslint:disable-next-line: no-shadowed-variable
  this.eventSource = [list].map(({ startTime, endTime, ...list }) => {
    // convert the start and end times to UTC so the calendar works
    return {
      startTime: this.dataService.convertDateToCalendarUtc(startTime),
      endTime: this.dataService.convertDateToCalendarUtc(endTime),
      ...list,
    };
  });
  console.log(this.eventSource);
});

}

Вот снимок экрана данных, возвращаемых, когда я регистрирую this.eventSource в консоль: Javascript консольный журнал с примером данных

1 Ответ

0 голосов
/ 06 августа 2020

Я пытался собрать, как упоминал arcan, но проблемы все еще были. Я использую ionic2-calendar, который требует, чтобы даты были в определенном формате c. Я пытался использовать операторы распространения / отдыха, чтобы изменить startTime и endTime, чтобы показать местное время, но не хотел терять остальную часть встречи или определять каждое поле (отсюда операторы распространения / отдыха).

Вот что у меня сработало:

this.api.readAll('appts').subscribe((appts: Appt[]) => {
  const Appts = appts.map((appt) => {
    const { startTime, endTime, ...other } = appt;
    // change times to local UTC format for calendar
    return {
      startTime: this.dataService.convertToUTC(
        this.dataService.convertToLocalTime(startTime)),
      endTime: this.dataService.convertToUTC(
        this.dataService.convertToLocalTime(endTime)),
      ...other,
    };
  });
  this.eventSource = Appts;
  console.log(this.eventSource);
});

Это сработало, чтобы отображать то же самое, что и было (отображалось правильно), но без ошибок. this.eventSource имеет тип any [], так что, возможно, это имеет к нему отношение. Я не уверен, но вот что сработало для всех, у кого была эта проблема.

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