为什么我会在这个 TypeScript 箭头函数中收到这个错误?

Why am I obtaining this error in this TypeScript arrow function?

我发现编写一个 箭头函数 有一些困难,它采用 2 个日期参数并检查这些日期对象是否代表同一天。

var result = (event.startDate, event.endDate) => { event.startDate.getFullYear() === event.endDate.getFullYear() &&
                                      event.startDate.getMonth() === event.endDate.getMonth() &&
                                      event.startDate.getDate() === event.endDate.getDate()
                                    }

但是 Visual Studio 代码在代码上给我这个错误:;'预期。

编译我的代码我得到:

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() &&

怎么了?我错过了什么?我该如何尝试修复它?
另一个疑问是:我是否必须明确 return 结果或结果 return 在箭头函数中是隐含的?

关于缺少分号的错误是因为箭头函数的主体在一个块中,所以每个语句都必须正确终止。

话虽如此,我认为缺少的分号并不是唯一的问题。首先,你的箭头函数的定义方式看起来不对。看起来您正在定义一个函数,但参数定义看起来像是一个现有变量事件的属性。

如果您已经有了事件对象,不确定为什么需要箭头函数。

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

我不太确定你想在这里达到什么目的。你这里有两个问题:

  1. 函数(以这种形式)需要有一个 return 语句。
  2. 您没有像这样指定输入参数。

    常量结果=(开始日期:日期,结束日期:日期)=> { return startDate.getFullYear() === endDate.getFullYear() && startDate.getMonth() === endDate.getMonth() && startDate.getDate() == = endDate.getDate(); }

这就是箭头函数的工作原理。

最后提示:由于您使用的是 TypeScript,因此请避免使用 var。使用 letconst 代替。具体来说(在这种情况下),使用 const 来定义这样的函数。