Typescript 如何从Array.prototype.reduce更改返回类型?

Typescript 如何从Array.prototype.reduce更改返回类型?,typescript,Typescript,我有一个CustomObject类型的对象数组,这些对象有一个名为stringArray的字段,它总是有一个字符串数组 我想做这样的事情 const testArray = arrayOfObjects.reduce( (a,b) => { return a.stringArray.concat(b.stringArray); }); typescript编译抱怨返回类型是string[],而实际返回类型应该是CustomObject类型。有没有办法强迫typescript意识到我

我有一个CustomObject类型的对象数组,这些对象有一个名为stringArray的字段,它总是有一个字符串数组

我想做这样的事情

const testArray = arrayOfObjects.reduce( (a,b) => {
   return a.stringArray.concat(b.stringArray);
});
typescript编译抱怨返回类型是
string[]
,而实际返回类型应该是
CustomObject
类型。有没有办法强迫typescript意识到我没有试图返回
CustomObject
,而是希望我的新const testArray为
string[]
类型


我尝试过
const testArray:string[]=…
,但这不起作用。

您的错误之一是希望
reduce
的返回值等于
string[]
,但同时尝试将
a
用作
a.stringArray

看看下面的例子


必须将空字符串数组作为第二个参数传递,以减少

const reduced = customObjectArr.reduce(
  (acc, value) => acc.concat(value.stringArr),
  new Array<string>()
);
const reduced=customObjectArr.reduce(
(acc,value)=>acc.concat(value.stringArr),
新数组()
);
然后,typescript可以推断
acc
参数和
reduce()
的返回类型是一个字符串数组


您可以使用
数组.prototype.reduce()
的形式,提供初始值,并将正确的类型提供给泛型:

接口自定义对象{
stringArray:string[];
}
常量arrayOfObjects:CustomObject[]=[
{
字符串数组:['1','2']
},
{
字符串数组:['3','4']
}
];
const testArray=阵列对象减少((附件,项目)=>{
返回acc.concat(项目stringArray);
}, []);

您能介绍一下什么是
arrayOfObjects
吗?请创建一个显示问题的列表。您可以使用来创建这样一个示例
const reduced = customObjectArr.reduce(
  (acc, value) => acc.concat(value.stringArr),
  new Array<string>()
);