类型 'string' 不可分配给类型 'never',类型 'unknown' 不能分配给 react 打字稿中的类型 'never' 错误



我在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]);行中,我分别在kv中得到错误Type 'string' is not assignable to type 'never'.ts(2322)Type 'unknown' is not assignable to type 'never'.ts(2322),但我没有得到任何解决方案来解决这些问题。我是打字新手。

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

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;
};

最新更新