属性ID在类型{}上不存在

时间:2020-01-28 07:26:07

标签: typescript react-router

  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”}}。

因此,此代码可以正常工作,但是会抛出打字错误。

请帮助我解决上述打字稿错误。

2 个答案:

答案 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 是参数列表中的一个键,类型总是一个字符串。