如何从值数组中创建联合类型?

时间:2019-02-26 15:35:07

标签: flowtype

number:number$Keys很有用,但是如果我要创建这种联合类型,它们就无济于事:

$Values

谢谢您的建议!

2 个答案:

答案 0 :(得分:1)

到目前为止,最好的解决方案是这样的解决方法:

type Screen = 'screen1' | 'screen2' | 'screen3';

const transitionsConfig = {
  from1to2: {from: 'screen1', to: 'screen2'},
  from2to3: {from: 'screen2', to: 'screen3'},
  from3to2: {from: 'screen3', to: 'screen2'},
  from2to1: {from: 'screen2', to: 'screen1'},
};

const transitions = Object.keys(transitionsConfig).map(k => ({
  name: k,
  ...transitionsConfig[k],
}));

type Transition = $Keys<typeof transitionsConfig>;

答案 1 :(得分:0)

我认为不可能做到这一点。 transitions数组中的值是运行时值,而类型是编译时抽象。换句话说,编译器无法查看您的数组内部,因为它实际上不存在(或者至少不作为具有值的事物存在)。您可能必须分别定义过渡类型并在它们之间创建联合类型。

虽然很酷。 :)

相关问题