typescript - TypeScript Array<>.reduce() 类型
问题描述
TypeScript 中有没有办法将Array.reduce
调用返回的类型从给定的类型更改?为了举例,我遇到问题的代码如下:
let executionSequence: RelationalReversionQuery[][] = this.reduce(
(accumulator: RelationalReversionQuery|RelationalReversionQuery[][], item: RelationalReversionQuery) => {
if (accumulator instanceof RelationalReversionQuery) {
if ((accumulator.ExecutionSequence === RelationalReversionQueryExecutionSequence.Indifferent) && (item.ExecutionSequence === RelationalReversionQueryExecutionSequence.Indifferent)) {
return [[accumulator, item]]
}
return [[accumulator], [item]];
}
if (item.ExecutionSequence !== RelationalReversionQueryExecutionSequence.Indifferent) {
accumulator.push([item]);
return accumulator;
}
if (accumulator.length > 0) {
let lastArray = accumulator[accumulator.length - 1];
if (lastArray.length > 0) {
if (lastArray[lastArray.length - 1].ExecutionSequence === RelationalReversionQueryExecutionSequence.Indifferent) {
lastArray.push(item);
} else {
accumulator.push([item]);
}
} else {
lastArray.push(item);
}
} else {
accumulator.push([item]);
}
return accumulator;
});
this
正在扩展类型Array<RelationalReversionQuery>
。
解决方案
这是有趣的。内置类型不允许您返回原始类型的不同类型,除非您.reduce
在这种情况下指定函数的第二个参数。
this.reduce((accumulator: RelationalReversionQuery|RelationalReversionQuery[][], item: RelationalReversionQuery) => {
// ...
}, []);
// ^ this is what you need to add
推荐阅读
- c++ - 为什么不能使用索引寻址修改我的字符串
- grep - 如何将匹配的文件名和扩展名从模式文件grep到文本文件?
- firebase - 为什么 Google 在他们自己的文档中不推荐 Google Firebase 用于多租户应用程序?
- r - ggplot2 中的 Summarise() 和 group_by() 似乎遗漏了我的数据框中的数据行
- plot - Grisu 未定义 - 朱莉娅
- spring-boot - 在生产中配置 flyway 的最佳实践
- python - 无论如何,streamlit 是否可以调用特定的反应组件?
- tf.keras - 标准 keras 模型的摘要不属于自定义模型
- excel - Excel 插件名称更改后如何重新注册?
- css - 防止滚动条溢出 - CSS