【发布时间】:2020-10-22 15:19:05
【问题描述】:
我有以下几种:
export type Transaction = {
amount: number,
description: string
}
export type TransactionsForMonth = {
month: number,
year: number,
transactions: Array<Transaction>
}
export type TransactionsGroupedByDay = Array<{
date: string,
transactionsForDay: Array<Transaction>
}>
export type TransactionsForMonthGroupedByDay = {
month: number,
year: number,
transactionsForMonth: Array<TransactionsGroupedByDay>,
}
我创建了一个函数,通过减少交易并将它们按天排序,将 TransactionsForMonth 转换为 TransactionsForMonthGroupedByDay:
transactionsGroupedByDay ({ month, year, transactions }: TransactionsForMonth): TransactionsForMonthGroupedByDay {
// transactions are already sorted in date order
const transactionsGroupedByDay: TransactionsGroupedByDay = transactions.reduce((transactionsGroupedByDay, transaction) => {
const thisDay = transactionsGroupedByDay.find(({ date }) => date === transaction.transactionDate)
const transactionsThisDay = thisDay ? [...thisDay.transactionsForDay, transaction] : [transaction]
return [
...transactionsGroupedByDay.filter(({ date }) => date !== transaction.transactionDate),
{
date: transaction.transactionDate,
transactionsForDay: transactionsThisDay
}
]
}, [])
return {
month,
year,
transactionsForMonth: transactionsGroupedByDay
}
}
当我在这个函数上运行流程时,我收到以下错误:
Cannot return object literal because object type [1] is incompatible with TransactionsGroupedByDay [2] in array element
of property transactionsForMonth. [incompatible-return]
src/api/services/TransactionService.js
55│ return {
56│ month,
57│ year,
58│ transactionsForMonth: transactionsGroupedByDay
59│ }
60│ }
61│
src/api/types.js
[1] 35│ export type TransactionsGroupedByDay = Array<{
36│ date: string,
37│ transactionsForDay: Array<Transaction>
38│ }>
:
[2] 43│ transactionsForMonth: Array<TransactionsGroupedByDay>,
我是 flowtype 的新手,想知道这个错误是什么意思?
【问题讨论】:
标签: javascript node.js arrays types flowtype