我想显示当前redux状态中的所有值,但涉及到“独特符号”类型时出现了错误,我不知道如何解决。
Object.keys() 表示它返回的是 “string[]”,但“typeof state”的 keyof 包括“unique symbol”,因此“ .map() ”不起作用。我添加了一个“ .filter() ”子句,但没什么帮助。
在JavaScript中运行正常,但TypeScript会报错并拒绝编译。
简化的例子:
Object.keys() 表示它返回的是 “string[]”,但“typeof state”的 keyof 包括“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)
"@typescript-eslint/ban-types": "off"
,以便它不会对“object”抛出错误,我认为这应该是一个警告。 - Andy Hubbard