number:number
和$Keys
很有用,但是如果我要创建这种联合类型,它们就无济于事:
$Values
谢谢您的建议!
答案 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
数组中的值是运行时值,而类型是编译时抽象。换句话说,编译器无法查看您的数组内部,因为它实际上不存在(或者至少不作为具有值的事物存在)。您可能必须分别定义过渡类型并在它们之间创建联合类型。
虽然很酷。 :)