首页 > 解决方案 > 如何为动态向对象添加键的函数定义返回类型?

问题描述

我有以下功能

export function getDateGroups(reviews: Reviews[]): any {
  return reviews.reduce(
    (acc, review: Reviews) => {
      if (review.isGood) {
        return { ...acc, goodReviews: [...acc.goodReviews, review] };
      }

      return { ...acc, badReviews: [...acc.badReviews, review] };
    },
    { goodReviews: [], badReviews: [] }
  );
}

可以说我有以下功能。如何为getDateGroups函数定义返回类型?

在这种情况下,我可以创建一个简单的界面,但是当添加的键是动态的时,我该如何处理?

我也可以在 reduce 函数中为acc定义一个类型吗?

标签: javascripttypescript

解决方案


type DataResult = {
    goodReviews: Reviews[],
    badReviews: Reviews[]
}

试试这个,因为acc是这些的起始值,你正在返回评论。

应该是什么样子,

type DataResult = {
    goodReviews: Reviews[],
    badReviews: Reviews[]
}
export function getDateGroups(reviews: Reviews[]): DataResult {
    return reviews.reduce(
        (acc: DataResult, review: Reviews) => {
            if (review.isGood) {
                return { ...acc, goodReviews: [...acc.goodReviews, review] };
            }

            return { ...acc, badReviews: [...acc.badReviews, review] };
        },
        { goodReviews: [], badReviews: [] }
    );
}

编辑

dynamic钥匙

type DataResult = {
    [key: string]: Reviews[]
}

推荐阅读