Javascript 使用流处于反应状态的嵌套对象

Javascript 使用流处于反应状态的嵌套对象,javascript,reactjs,flowtype,Javascript,Reactjs,Flowtype,我有一个关于流的嵌套状态对象的问题 假设我想要一个条件参数close,在React组件中处于状态的对象中 class Appearance extends React.Component { state: { house: { open: number, close?:number, }, }; constructor(props) { super(props); const house = { open: 0,

我有一个关于流的嵌套状态对象的问题

假设我想要一个条件参数
close
,在React组件中处于状态的对象中

class Appearance extends React.Component {
  state: {
    house: {
      open: number,
      close?:number,
    },
  };
  constructor(props) {
    super(props);
    const house = {
      open: 0,
    };
    if (props.door) {
      house.close = 0;
    }
    this.state = {
      house,
    };
  }
这似乎给了我一个错误
close。在对象文字中找不到属性

我做错了什么,或者我可以用另一种方法来做吗?

您正在使用
const house={open:0}创建一个密封对象文字

从流程文档中进行检查

试一试

或者。。。您可以使用
对象。分配
并将其作为密封对象保存

const house = Object.assign({}, 
  {open: 0},
  props.door ? {close: 0} : null
);
注意:Flow将不允许您使用

const house = Object.assign({}, 
  {open: 0},
  props.door && {close: 0}
);
因为
props.door&&{close:0}
变成了布尔值,而Flow不支持这一点

const house = Object.assign({}, 
  {open: 0},
  props.door && {close: 0}
);