为嵌套的解构道具添加类型。打字稿反应终极版。 TS2339

Adding type to nested destructured props. Typescript React Redux. TS2339

mapStateToProps() 函数的解构属性(来自 redux 状态)是嵌套的,我如何将 HeaderStateMap 类型应用于它?我在编译时收到以下错误消息:

Property 'cart' does not exist on type 'HeaderStateMap'.  TS2339

此外,我同时设置了 user:any,但是如果我将类型更改为对象,TypeScript 会抱怨 Property 'user' does not exist on type '{}'.

非常感谢任何帮助:)。

代码

type HeaderStateMap = {
    user:any,
    hidden:boolean
};

const mapStateToProps = ({ user: { user }, cart: { hidden } }:HeaderStateMap) => {
    return {
        user,
        hidden
    };
};

您可以嵌套类型:

interface User {
  name: string;
};

type HeaderStateMap = {
  user: User;
  cart: {
    hidden: boolean;
  };
};

关于您遇到的错误,我认为您解构得太过分了,您假设您在用户对象中有用户:user.user,尝试:

const mapStateToProps = ({ user, cart: { hidden } }:HeaderStateMap) =>