如何使用联合类型的日期或对象来满足流程

时间:2017-08-12 19:28:38

标签: reactjs flowtype

我有以下类型:

export type dateParts = { day?: string, month?: string, year?: string };

export type dateOrObject = Date | dateParts;

然后我有一个DatePicker组件:

export class DatePicker extends Component {
  props: {
    value?: dateOrObject,
  };

但当我尝试解构value时它是一个对象:

if (!isDate(value)) {
  const { day, month, year } = value;

  this.state = {
    day,
    month,
    year
  };

  return;
}

我收到此错误:

const { day, month, year } = value;
                               ^^^^ property `year`. Property not found in
const { day, month, year } = value;
                                        ^^^^^ Date

1 个答案:

答案 0 :(得分:0)

  

脱节联盟要求您使用单个属性进行区分   每种对象类型。你无法区分两个不同的对象   不同的属性。

Flow在您的情况下不知道isDate函数的含义。所以最好使用简单的属性检查。

if (value.year) {
  const { day, month, year } = value;

  this.state = {
    day,
    month,
    year
 };

 return;
}

更新,上面不起作用,但它遵循官方文档。

试试这个:

! (value instanceof Date)