【发布时间】:2021-06-22 16:39:38
【问题描述】:
我正在尝试显示当前 redux 状态下的所有值,但遇到涉及 unique symbol 类型的错误,我不知道如何解决。
Object.keys() 说它正在返回 string[] 但 keyof typeof state 包含 unique symbol 所以 .map() 不起作用。我添加了一个 .filter() 子句,但这没有帮助。
这在 javascript 中运行时可以正常工作,但 typescript 会尖叫并拒绝编译。
简化示例:
const state = useAppSelector(state => state);
return (
<div>
{Object.keys(state).filter((x: keyof typeof state) => x instanceof String).map((x) =>
<div>
<label>{x}</label>
<div>
{Object.keys(state[x]).filter((y: keyof typeof state[x]) => y instanceof String).map((y) =>
<span>{y}: {JSON.stringify(state[x][y])}</span>
)}
</div>
</div>
)}
</div>
);
如何正确输入?
编辑:
我尝试使用Omit<> 实用程序类型:
Object.keys(state).map((x: Omit<keyof typeof state, symbol>) =>
但这仍然会导致通过state[x]访问状态时出错:
Type 'Omit<"auth" | "developer" | "errors" | "info" | unique symbol, symbol>' cannot be used as an index type. ts(2538)
【问题讨论】: