gpt4 book ai didi

javascript - 向递归函数添加类型

转载 作者:搜寻专家 更新时间:2023-10-30 21:32:34 26 4
gpt4 key购买 nike

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

 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> 

但是我得到这个错误,

Cannot invoke an expression whose type lacks a call signature. Type '{ (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;...' has no compatible call signatures.ts(2349)

知道如何解决这个问题吗?

最佳答案

你可能想做

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>

Playground link

关于javascript - 向递归函数添加类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57268649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com