此函数声明编译并且似乎是正确的:
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。
答案 0 :(得分:0)
我摆弄一些东西,这似乎可行:
const flattenDeep = <T>(arr: Array<any>): Array<T> => {
return Array.isArray(arr) ? arr.reduce( (a, b) => [...flattenDeep(a), ...flattenDeep(b)] , []) : [arr];
};