将类型添加到递归功能中



我是否有以下功能使一个数组项目弄平

 private flatArray(data): [] {
    return data.reduce((accu, val) => (Array.isArray(val) ? accu.concat(this.flatArray(val)) : accu.concat(val)), []);
  }

现在我想在参数中添加类型,以下是我的做法,

  private flatArray<T>(data: Array<Array<T>> | Array<T>): Array<T> 

但是我遇到了这个错误,

无法调用类型缺乏呼叫签名的表达式。类型 '{ (callbackfn :( presostvalue:t,currentValue:t,currentIndex:number, 数组:t [](=> t(:t;(callbackfn :( presostValue:t,currentValue:t, CurrentIndex:数字,数组:t [](=> t,initialValue:t(:t; (callbackfn :( presotvalue:u,currentValue:t,currentIndex: 数字,数组:t [](=> u,initialValue:u(:u; ...'没有兼容 呼叫Signatures.ts(2349(

任何想法如何解决此问题?

您可能想做

private flatArray<T>(data: Array<T | Array<T>>): Array<T>

为了允许递归嵌套数组的一种更强大的方法将使用专用的Readonly类型。

interface NestedArray<T> extends ReadonlyArray<NestedArray<T> | T> { }
// ...
private flatArray<T>(data: NestedArray<T>): Array<T>

游乐场链接

最新更新