【问题标题】:Why is return keyword needed in array.map when returning an object with arrow function?为什么返回带有箭头函数的对象时,array.map 中需要 return 关键字?
【发布时间】:2022-01-23 21:57:50
【问题描述】:

在这种情况下,为什么我们必须在 rawApiData.map 回调箭头函数中写 return 关键字?

protected assembleLCodeDealers(rawApiData): DealerLossCodeDealer[] {
    if (rawApiData) {
      return rawApiData.map(p => {
        return {
          code: p.code,
          id: p.id,
          name: p.name
        } as DealerLossCodeDealer;
      });
    } else {
      return [];
    }
  }

【问题讨论】:

  • 我对这个问题感到困惑,你不知道map 是如何工作的吗?还是您对箭头函数的语法感到困惑?
  • 如输入所示,assembleLCodeDealers 预计会产生一个数组,因此它必须返回一个数组。如果存在“什么都不做”的情况,则必须返回一个空数组,而不是通常的“什么都不返回,从而产生未定义”
  • 在这种情况下,我需要了解为什么我们必须在 rawApiData.map 之前写 return。
  • 因为否则assembleLCodeDealers 函数不会返回任何内容,而打字表明它必须这样做。 Array.map 创建一个新数组,仅此而已。

标签: typescript


【解决方案1】:

您可能会对带有 1 个返回表达式的 arrow function shorthand syntax 感到困惑,这确实不需要显式的 return。

但是如果你使用花括号,它会为多个表达式打开一个代码块,而不是一个要返回的对象。

只需将要返回的对象的花括号用括号括起来,以避免它们被解释为代码块:

rawApiData.map(p => ({
  code: p.code,
  id: p.id,
  name: p.name
}) as DealerLossCodeDealer)

见advanced syntax

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多