Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 类型';字符串';不可分配给类型';绝不';和类型';未知';不可分配给类型';绝不';反应类型脚本中的错误_Reactjs_Typescript_Function - Fatal编程技术网

Reactjs 类型';字符串';不可分配给类型';绝不';和类型';未知';不可分配给类型';绝不';反应类型脚本中的错误

Reactjs 类型';字符串';不可分配给类型';绝不';和类型';未知';不可分配给类型';绝不';反应类型脚本中的错误,reactjs,typescript,function,Reactjs,Typescript,Function,我在React Typescript中有一个函数 const filter = (data: any) => { if (Array.isArray(data)) { const temp = data.reduce((r, v) => { v = filter(v); if (v !== "") r.push(v); return r; }, []); return te

我在React Typescript中有一个函数

const filter = (data: any) => {
    if (Array.isArray(data)) {
      const temp = data.reduce((r, v) => {
        v = filter(v);
        if (v !== "") r.push(v);
        return r;
      }, []);
      return temp.length ? temp : "";
    }
    if (data && typeof data === "object") {
      const temp = Object.entries(data).reduce((r, [k, v]) => {
        v = filter(v);
        if (v !== "") r.push([k, v]);
        return r;
      }, []);
      return temp.length ? Object.fromEntries(temp) : "";
    }
    return data;
  };

但是在这里,
if(v!=“”)r.push([k,v])我收到错误
类型“string”不可分配给类型“never”。ts(2322)
类型“unknown”不可分配给类型“never”。ts(2322)
分别位于
k
v
中,但我没有找到任何解决这些问题的方法。我是Typescript新手。

Typescript无法在reduce中找出正确的
r
,因此它假定它是
从不[]
。您可以通过自己指定正确的类型来解决这个问题

const filter = (data: any) => {
  if (Array.isArray(data)) {
    const temp = data.reduce((r, v) => {
      v = filter(v);
      if (v !== "") r.push(v);
      return r;
    }, []);
    return temp.length ? temp : "";
  }
  if (data && typeof data === "object") {
    const temp = Object.entries(data).reduce((r, [k, v]) => {
      v = filter(v);
      if (v !== "") r.push([k, v]);
      return r;
    }, [] as [string, unknown][]);
    return temp.length ? Object.fromEntries(temp) : "";
  }
  return data;
};