如何根据参数字符串定义返回类型? Flowtype javascript

时间:2017-08-03 10:05:30

标签: javascript flowtype ecmascript-next

例如我得到了这个fn:

const aCar = {type: 'car', wheels: 4};
const aBike = {type: 'bike', wheels: 2};

const fn = (type:'a'|'b'):Car|Bike => {
  if(type === `a`) return aCar;
  if(type === `b`) return aBike;
}

问题是返回始终是BikeCar,与类型无关。我想强制说,当类型为a时,返回的格式始终为Car,而b的格式为Bike

这可能吗?

某事very close

// @flow

const items = [1, 2, 3];

type FirstType = ((_: 'a') => number) & ((n: 'b') => Array<number>);

const first: FirstType = (n):any => {
  if (n === "a") {
    return items[0];
  } else if(n === 'b') {
    return items;
  }
}

const a: number = first('a');
const b: Array<number> = first('b');

由于

1 个答案:

答案 0 :(得分:1)

我找到了一种方法来完成我需要的代码。是重载函数,然后使用参数作为对象来定义返回。是相当好的解决方案,但可能会更好。

注意:formatNotification的参数只能是一个对象而不是formatNotification(type, data)这两个参数。

仍然不是一个好的解决方案,但中途工作。

enter image description here

类型:

enter image description here