gpt4 book ai didi

TypeScript:多维数组参数的正确方法

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

我正在使用 TS 处理一些 JS 算法。所以我做了这个功能:

function steamrollArray(arr: any[]): any[] {
return arr.reduce(
(accum: any, val: any) =>
Array.isArray(val) ? accum.concat(steamrollArray(val)) : accum.concat(val)
, []);
}

但参数需要灵活地接受多维数组,如下所示:

steamrollArray([[["a"]], [["b"]]]);
steamrollArray([1, [2], [3, [[4]]]]);
steamrollArray([1, [], [3, [[4]]]]);
steamrollArray([1, {}, [3, [[4]]]]);

定义函数参数的正确方法是什么?

当然我可以使用类型,就像这里:typescript multidimensional array with different types但不适用于所有情况。

最佳答案

您需要定义一个类型,它可能是数组,也可能不是。像这样的东西:

type MaybeArray<T> = T | T[];

然后您可以将函数更新为:

function steamrollArray<T>(arr: MaybeArray<T>[]): T[] {
return arr.reduce(
(accum: any, val: any) =>
Array.isArray(val) ? accum.concat(steamrollArray(val)) : accum.concat(val)
, []);
}

有了它,Typescript 将能够正确解析类型并理解您的意图。

关于TypeScript:多维数组参数的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52412815/

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