将类型添加到递归函数

user007

我有这个下面的函数来展平数组项,

 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:(previousValue:T,currentValue:T,currentIndex:number,array:T [])=> T):T; (callbackfn:(previousValue:T,currentValue:T,currentIndex:number,array:T [])=> T,initialValue:T):T; (callbackfn:(previousValue:U,currentValue:T,currentIndex:number,array:T [])=> U,initialValue:U):U; ...'没有兼容的呼叫签名.ts(2349)

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

转到0

你可能想做

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

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

interface NestedArray<T> extends ReadonlyArray<NestedArray<T> | T> { }

// ...

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

游乐场链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章