在TS中,如何定义children 属性?

in TS, How to define children property?

我正在与 ReactMobX 学习 Typescript

我的 MobX 商店赞爆了。

store: {
  child: {
    selected: true,
    value: 123
  }
}

我的组件是

@inject('store')
@observer
class Display extends React.Component<{store: Object}, {}> {
  ...

  render(){
    console.log(this.props.store.child.selected); // true
  }
}

我可以看到这个警报。

[ts] Property 'child' does not exist on type 'Object'. [2339]

您可以使用接口来声明商店的形状:

interface Child {
    selected: boolean;
    value: number;
}

interface Store {
    child: Child;
}

@inject('store')
@observer
class Display extends React.Component<{ store: Store }, {}> {
  ...

  render() {
    console.log(this.props.store.child.selected); // true
  }
}

或者您可以使用 any or 作为商店类型。

您收到的错误是因为您将商店道具定义为通用 Object,它没有名为 child 的 属性。

要使其正常工作,只需像这样为您的商店定义一个界面:

interface Store {
  store: {
    child: {
      selected: boolean;
      value: number;
    }
  }
}

然后将其用作组件中 props 的定义:

class Display extends React.Component<Store, {}> {