reactjs - 类型“字符串”不可分配给类型“从不”并且类型“未知”不可分配给反应打字稿中的类型“从不”错误
问题描述
我在 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]);
遇到了错误Type 'string' is not assignable to type 'never'.ts(2322)
和错误,但是我没有得到解决这些问题的任何解决方案。我是打字稿的新手。Type 'unknown' is not assignable to type 'never'.ts(2322)
k
v
解决方案
Typescript 无法r
在你的 reduce 中找出正确的类型,所以它假设它是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;
};
推荐阅读
- kernel - PCI mmio 从 lspci 分配不同的地址
- drop-down-menu - 在 PyCharm 中显示下拉方法菜单的程序
- python - 如何将 tensorflow 中的模型组合成一个组合图,使它们遵循交替顺序?
- python - Flask:属性值无
- html - Bootstrap4中一个元素的多个类
- python - 从另一个函数调用和操作一个函数内的数组
- arduino - 带有 AsyncWebServer(ds18b20 传感器)的 NodeMCU 板上出现错误
- square - 创建发票后更新 Square Order 时出错
- ios - MarqueeLabel Swift - 使用情节提要的错误
- reactjs - AWS Amplify 前端构建在主分支上失败,但在功能分支上成功构建