Ich implementieren eine einfache Zustandsmaschine. Die Konfiguration ist wie folgt:
type StateMachineConfig<State extends string, TransitionState extends State> = Record<State, TransitionState[]>;
Jeder Schlüssel sollte eine String-Aufzählung sein.
Jeder Wert sollte ein Array derselben Zeichenfolgenaufzählung sein, aber der als Schlüssel angegebene Status sollte nicht im Array enthalten sein
Daher folgender Stand:
enum MyStates { State1 = "State 1", State2 = "State 2", State3 = "State 3" }
...das Folgende sollte funktionieren:
const config: StateMachineConfig<MyStates, MyStates> = { [MyStates.State1]: [MyStates.State2], [MyStates.State2]: [MyStates.State3], [MyStates.State3]: [MyStates.State1, MyStates.State2] }
...aber nicht das Folgende:
const config: StateMachineConfig<MyStates, MyStates> = { [MyStates.State1]: [MyStates.State2], [MyStates.State2]: [MyStates.State3], [MyStates.State3]: [MyStates.State2, MyStates.State3] // error: value in array is same as key }
您可以为此使用映射类型和
排除
:(在线演示)