我正在使用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,但不适用于所有情况。
答案 0 :(得分:1)
您将要定义一个可能是数组而可能不是数组的类型。像这样:
HttpContext.Current.RewritePath("/Account/MaintenancePage");
然后您可以将功能更新为:
type MaybeArray<T> = T | T[];
这样,Typescript将能够正确解析类型并理解您的意图。