为什么我在此TypeScript箭头函数中遇到此错误?

时间:2020-05-27 11:05:57

标签: typescript arrow-functions

我发现编写带有两个日期参数的箭头函数并检查对象的日期是否代表同一天是很困难的。

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 Code在代码上给我这个错误:;'预期。

然后编译我得到的代码:

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 个答案:

答案 0 :(得分:1)

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

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

如果已经有了事件对象,则不确定为什么需要箭头功能。

    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 :(得分:1)

我不确定您要在这里实现什么。您在这里遇到两个问题:

  1. 该函数(采用这种形式)需要具有return语句。
  2. 您不必指定这样的输入参数。

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

这就是箭头功能的工作原理。

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