[typescript] 정적 메서드와 인스턴스 메서드를 사용하여 유틸리티 클래스 만들기

타입스크립트를 사용하여 유틸리티 클래스를 만들 때, 정적 메서드와 인스턴스 메서드를 활용할 수 있습니다. 정적 메서드는 클래스 자체에 연결되어 있으며, 인스턴스를 생성하지 않고 호출할 수 있습니다. 반면에, 인스턴스 메서드는 클래스의 인스턴스에 연결되어 있어서, 해당 클래스의 인스턴스를 생성한 후에만 호출할 수 있습니다. 이번 글에서는 이러한 두 가지 메서드를 이용하여 유틸리티 클래스를 구현하는 방법을 살펴보겠습니다.

정적 메서드를 사용한 유틸리티 클래스

정적 메서드를 사용하여 유틸리티 클래스를 만들 때 유용한 사례를 예로 살펴보겠습니다. 우리는 Math 클래스의 정적 메서드를 흔하게 사용해왔을 것입니다. 예를 들어, Math 클래스의 round 메서드는 주어진 숫자를 반올림하여 반환합니다.

다음은 TypeScript로 작성된 유틸리티 클래스의 예시입니다.

class MathUtil {
  static roundToNearestWhole(number: number): number {
    return Math.round(number);
  }
}

// 정적 메서드 호출
const roundedNumber = MathUtil.roundToNearestWhole(3.14);
console.log(roundedNumber); // 출력: 3

위 예시에서 MathUtil 클래스는 roundToNearestWhole이라는 정적 메서드를 가지고 있습니다. 이 메서드를 호출하기 위해서는 클래스의 인스턴스를 생성하지 않고도 바로 호출할 수 있습니다.

인스턴스 메서드를 사용한 유틸리티 클래스

반면에, 인스턴스 메서드를 사용하여 유틸리티 클래스를 만들 수도 있습니다. 인스턴스 메서드는 클래스의 인스턴스를 생성한 후에 사용할 수 있다는 점에서 조금 다릅니다. 다음은 유틸리티 클래스에서 인스턴스 메서드를 사용하는 예시입니다.

class StringManipulator {
  private value: string;

  constructor(value: string) {
    this.value = value;
  }

  toUppercase(): string {
    return this.value.toUpperCase();
  }

  toLowercase(): string {
    return this.value.toLowerCase();
  }
}

// 인스턴스 메서드 호출
const stringUtil = new StringManipulator("Hello, World!");
console.log(stringUtil.toUppercase()); // 출력: "HELLO, WORLD!"
console.log(stringUtil.toLowercase()); // 출력: "hello, world!"

위 예시에서 StringManipulator 클래스는 toUppercasetoLowercase라는 인스턴스 메서드를 가지고 있습니다. 이 메서드들은 해당 클래스의 인스턴스를 생성한 후에만 호출할 수 있습니다.

결론

정적 메서드와 인스턴스 메서드는 각각 클래스와 클래스의 인스턴스에 연결되어 있습니다. 적재적소에 적합한 메서드를 선택하여 유틸리티 클래스를 설계함으로써, 코드의 가독성과 재사용성을 높일 수 있습니다. 위의 예시를 참고하여, 유틸리티 클래스를 구현하는 데에 있어 정적 메서드와 인스턴스 메서드를 적절히 활용해 보시기 바랍니다.

참고문헌: