[typescript] 열거형(Enum)을 이용한 메소드 오버로딩(Method Overloading)

TypeScript는 JavaScript에 타입을 추가하는 정적 타입 언어로, 메소드 오버로딩과 같은 객체지향 프로그래밍 개념을 지원합니다. 이번 글에서는 TypeScript에서 enum을 사용하여 메소드 오버로딩을 구현하는 방법에 대해 살펴보겠습니다.

Enum(열거형) 개념

enum은 연관된 상수 값을 정의할 때 사용되는 TypeScript의 데이터 형식입니다. 일반적으로 enum은 관련된 상수들을 논리적으로 그룹화하고 코드의 가독성을 높이는 데 사용됩니다.

예를 들어, 아래와 같이 HTTP 상태 코드를 열거형으로 정의할 수 있습니다:

enum HttpStatusCode {
  OK = 200,
  BadRequest = 400,
  NotFound = 404,
  InternalServerError = 500
}

메소드 오버로딩

메소드 오버로딩은 동일한 이름의 메소드가 다른 매개변수 타입 또는 갯수에 따라 다르게 동작하도록 하는 것을 의미합니다. TypeScript는 이를 지원하여 하나의 함수에 여러 시그니처를 선언할 수 있게 합니다.

아래는 enum을 이용하여 HTTP 상태 코드를 다뤄야 하는 메소드를 오버로딩하는 예제입니다:

class HttpRequestHandler {
  handleResponse(status: HttpStatusCode.OK): void;
  handleResponse(status: HttpStatusCode.BadRequest | HttpStatusCode.NotFound): void;
  handleResponse(status: HttpStatusCode): void {
    // status에 따른 동작 수행
    console.log("Handling response for status code: " + status);
  }
}

위의 코드에서 HttpRequestHandler 클래스의 handleResponse 메소드는 HttpStatusCode 열거형을 이용하여 오버로딩되었습니다. 첫 번째 오버로딩은 OK 상태 코드만을 처리하고, 두 번째 오버로딩은 BadRequestNotFound 상태 코드를 처리합니다.

결론

TypeScript의 enum을 이용한 메소드 오버로딩은 코드의 가독성을 높이고 유지보수를 용이하게 합니다. 이를 통해 다양한 상황에 따라 적절한 동작을 수행하는 메소드를 정의할 수 있습니다.

참고문헌: TypeScript Handbook - Enums

위와 같이 TypeScript에서 enum을 활용하여 메소드 오버로딩을 구현할 수 있습니다. 이를 통해 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.