Почему я получаю эту ошибку в этой стрелочной функции TypeScript? - PullRequest
0 голосов
/ 27 мая 2020

Я обнаружил некоторые трудности с написанием стрелочной функции , которая принимает 2 параметра даты и проверяет, соответствует ли объект этих дат один и тот же день. ошибка по коду: ; ' Ожидается.

И компилируя мой код, я получаю:

ERROR in src/app/people-list/people-list.component.ts:103:51 - error TS1005: ';' expected.

103     var result = (event.startDate, event.endDate) => { event.startDate.getFullYear() === event.endDate.getFullYear() &&

Что не так? Что мне не хватает? Как я могу попытаться исправить это?
Еще одно сомнение: должен ли я явно возвращать результат или возвращаемый результат неявен в стрелочной функции?

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Я не совсем уверен, чего вы здесь пытаетесь достичь. У вас есть две проблемы:

  1. Функция (в этой форме) должна иметь оператор возврата.
  2. Вы не указываете такие входные аргументы.

    const result = (startDate: Date, endDate: Date) => {return startDate.getFullYear () === endDate.getFullYear () && startDate.getMonth () === endDate.getMonth () && startDate. getDate () === endDate.getDate (); }

Так работают стрелочные функции.

Подсказка в конце: поскольку вы используете TypeScript, избегайте использования var . Вместо этого используйте let и const . В частности (в этом случае) используйте const для таких определений функций.

1 голос
/ 27 мая 2020

Ошибка, связанная с отсутствующей точкой с запятой, связана с тем, что тело вашей стрелочной функции находится в блоке, поэтому каждый оператор должен быть правильно завершен.

При этом, я думаю, что отсутствующая точка с запятой не является единственная проблема. Во-первых, то, как определена ваша стрелочная функция, выглядит неправильно. Похоже, вы определяете функцию, но определения параметров выглядят так, как будто они являются свойствами события переменной existig.

Если у вас уже есть объект события, не уверен, зачем вам нужна стрелочная функция.

    var result = event.startDate.getFullYear() === event.endDate.getFullYear() &&                                       event.startDate.getMonth() === event.endDate.getMonth() &&                                           event.startDate.getDate() === event.endDate.getDate();

Результат должен быть истинным или ложным. Если вы действительно хотите использовать функцию стрелки, вам понадобится что-то вроде этого

const fn = (event: any) =>  event.startDate.getFullYear() === event.endDate.getFullYear() &&                                       event.startDate.getMonth() === event.endDate.getMonth() &&                                           event.startDate.getDate() === event.endDate.getDate();

const result = fn(event);
...