[typescript] 열거형(Enum)을 이용한 상태 머신(State Machine) 구현하기

이번에는 TypeScript를 사용하여 열거형(Enum)을 통해 상태 머신(State Machine)을 구현하는 방법에 대해 알아보겠습니다. 상태 머신은 특정 상태에 따라 동작이 변하는 로직을 다룰 때 유용하게 사용됩니다. 열거형은 상태와 상태에 대한 전이를 정의할 때 간편하고 명확한 구조를 제공합니다.

1. 열거형(Enum) 정의

먼저, 열거형을 사용하여 상태 머신의 각 상태를 정의합니다.

enum State {
  Idle,
  Loading,
  Success,
  Error
}

위의 예제에서는 Idle, Loading, Success, Error라는 네 가지 상태를 정의했습니다.

2. 상태 머신(State Machine) 클래스 구현

다음으로, 위에서 정의한 열거형을 사용하여 상태 머신을 구현하는 클래스를 작성합니다.

class StateMachine {
  currentState: State;

  constructor(initialState: State) {
    this.currentState = initialState;
  }

  transitionTo(newState: State) {
    // 상태 전이 로직 작성
    this.currentState = newState;
  }
}

위의 예제에서는 StateMachine 클래스를 정의하고, transitionTo 메서드를 통해 상태 전이 로직을 구현했습니다.

3. 상태 머신 활용

이제 상태 머신 클래스를 실제로 활용할 수 있습니다.

const stateMachine = new StateMachine(State.Idle);

stateMachine.transitionTo(State.Loading);
console.log(stateMachine.currentState); // 출력 결과: Loading

stateMachine.transitionTo(State.Success);
console.log(stateMachine.currentState); // 출력 결과: Success

위의 예제에서는 StateMachine 클래스를 생성하고, transitionTo 메서드를 통해 상태를 변경하여 상태 변화를 확인했습니다.

이렇게 열거형(Enum)을 사용하여 상태 머신을 구현하면 상태 전이를 명확하게 정의할 수 있고, 코드의 가독성을 높일 수 있습니다.

이상으로 TypeScript를 사용하여 열거형을 통한 상태 머신 구현에 대해 알아보았습니다.

참고 문헌: TypeScript Handbook - Enums