TypeScript - 属性 在类型上不存在(但它存在)?

TypeScript - property does not exist on type (but it exists)?

我有一种包含一些用户数据的用户。还有一种 UserResponse,基本上是 users: User[]。到目前为止一切都很容易。问题是我必须将 UsersResponse 作为道具传递,然后我无法访问 .users。这是为什么?

Link to Codesandbox.

部分代码:

export type User = {
  login: string;
  password: string;
}

export type UsersResponse = {
  users: User[];
}

export interface MyProps {
  props: UsersResponse;
}

const App = (props: MyProps): any => {
  console.log('props: ', props.users);

  return (
    <>foo</>
  );
}

Console.log 失败,因为 Property 'users' does not exist on type 'MyProps'.

但这对我来说毫无意义,因为 MyProps returns UsersResponse 并且它有 users。我在这里错过了什么?我该如何解决?我知道这很明显,或者我打错了字,但实际上,我找不到它。注意我必须使用 props: type 因为这种格式是由我使用的框架强制的。

您在 MyProps 界面中设置了错误的密钥。

而且您也不需要声明 UsersResponse

试试这个:

export type User = {
  login: string;
  password: string;
}

export interface MyProps {
  users: User[];
}

const App = (props: MyProps): any => {
  console.log('props: ', props.users);

  return (
    <>foo</>
  );
}