【问题标题】:Generic type with function expression instead of function declartion具有函数表达式而不是函数声明的泛型类型
【发布时间】:2018-12-25 19:08:39
【问题描述】:

这个函数声明编译并且似乎是正确的:

function flattenDeep<T>(arr: Array<any>): Array<T>{
  return Array.isArray(arr) ? arr.reduce( (a, b) => [...flattenDeep(a), ...flattenDeep(b)] , []) : [arr];
}

但是这个函数表达式不能编译:

 const flattenDeep<T> = (arr: Array<any>): Array<T> => {
   return Array.isArray(arr) ? arr.reduce( (a, b) => [...flattenDeep(a), ...flattenDeep(b)] , []) : [arr];
 };

如果可能的话,我正在寻找与函数表达式相同的正确语法。

我这样称呼 flattenDeep:

  enq(...args: Array<Array<X> | X>): Array<boolean> {
    return flattenDeep<X>(Array.from(arguments)).map(v => {
      return v['key'] ? this.enqueue(v.key, v.value) : this.enqueue(v.value);
    });
  }

我不确定我所拥有的是否足以表明 flattenDeep 应该返回类型 X。

【问题讨论】:

    标签: typescript generics tsc typescript-generics


    【解决方案1】:

    我又搞砸了一些,这似乎奏效了:

    const flattenDeep =  <T>(arr: Array<any>): Array<T> => {
      return Array.isArray(arr) ? arr.reduce( (a, b) => [...flattenDeep(a), ...flattenDeep(b)] , []) : [arr];
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 2010-10-04
      相关资源
      最近更新 更多