【发布时间】:2021-11-25 10:15:41
【问题描述】:
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> 类型。
【问题讨论】:
-
到底是什么问题?您期望会发生什么以及会发生什么?
-
@VLAZ 代码方面,它在 JavaScript 中没有类型问题,但在 TypeScript 中我在 WebStorm 中遇到类型错误。我期望接收
Array<RelationalReversionQuery>并输出Array<Array<RelationalReversionQuery>>- 也就是说,累加器内发生类型更改。
标签: typescript typescript-typings typescript-generics