type ApiItem = Record<string, unknown>;
type CSVItem = Record<string, unknown>;
type Model = { converter: (item: ApiItem) => CSVItem | CSVItem[] };
function convertItems(model: Model, { main }: { main: ApiItem[] }): CSVItem[] {
const { converter } = model;
return main.flatMap((item) => converter(item));
}
flatMap
指令引发错误:
Type 'unknown[]' is not assignable to type 'CSVItem[]'.
Type 'unknown' is not assignable to type 'CSVItem'.
如果我将最后一行改为:
return main.flatMap<CSVItem>((item) => converter(item));
我不明白,因为我给予flatMap
的回调是已知的,它返回一个CSVItem或CSVItem数组,推理应该起作用,我不应该指定flatMap调用的返回类型。
TSPlayground
1条答案
按热度按时间jgovgodb1#
我刚刚想到如何正确地避开这个错误:
flatMap似乎只有在
converter
函数返回ReadonlyArray
而不是通常的数组时才能推断U。虽然我不太明白为什么,但我的打字水平仍然在缓慢上升。