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

时间:2018-09-19 19:15:10

标签: typescript multidimensional-array

我正在使用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,但不适用于所有情况。

1 个答案:

答案 0 :(得分:1)

您将要定义一个可能是数组而可能不是数组的类型。像这样:

HttpContext.Current.RewritePath("/Account/MaintenancePage");

然后您可以将功能更新为:

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

这样,Typescript将能够正确解析类型并理解您的意图。