Static & Private Class Fields
What does this private implementation guarantee?
class StateMachine {
#state;
static #validTransitions = new Map([
['idle', ['running', 'error']],
['running', ['idle', 'error']],
['error', ['idle']]
]);
constructor() {
this.#state = 'idle';
}
transition(newState) {
const validTransitions = StateMachine.#validTransitions.get(this.#state);
if (!validTransitions?.includes(newState)) {
throw new Error('Invalid state transition');
}
this.#state = newState;
}
}