const state = history.location.state;
const id = state?.id;
以下是打字稿错误:
Property 'id' does not exist on type '{}'. TS2339
我从history.location.state获取id值,即从react-router发送id prop作为state到history.push(“ pathname”,{id:“ some value”}}。
因此,此代码可以正常工作,但是会抛出打字错误。
请帮助我解决上述打字稿错误。
答案 0 :(得分:2)
似乎TypeScript编译器不知道history.location.state
的正确类型。您可以尝试为React安装类型:
npm install --save-dev @types/react @types/react-dom @types/react-router-dom
或者,要解决该错误,您可以强制state
键入any
:
const state = history.location.state;
const id = (state as any)?.id;
答案 1 :(得分:2)
检查类型,并尝试解密它们。 ?
TL;DR
const { id } = useParams<{ id: string }>();
函数定义如下:
export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params;
如果您想要一个 id
,您可以为您想要的任何其他参数添加一个 id
,依此类推。
K 是参数列表中的一个键,类型总是一个字符串。