타입스크립트를 사용하여 유틸리티 클래스를 만들 때, 정적 메서드와 인스턴스 메서드를 활용할 수 있습니다. 정적 메서드는 클래스 자체에 연결되어 있으며, 인스턴스를 생성하지 않고 호출할 수 있습니다. 반면에, 인스턴스 메서드는 클래스의 인스턴스에 연결되어 있어서, 해당 클래스의 인스턴스를 생성한 후에만 호출할 수 있습니다. 이번 글에서는 이러한 두 가지 메서드를 이용하여 유틸리티 클래스를 구현하는 방법을 살펴보겠습니다.
정적 메서드를 사용한 유틸리티 클래스
정적 메서드를 사용하여 유틸리티 클래스를 만들 때 유용한 사례를 예로 살펴보겠습니다. 우리는 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
클래스는 toUppercase
와 toLowercase
라는 인스턴스 메서드를 가지고 있습니다. 이 메서드들은 해당 클래스의 인스턴스를 생성한 후에만 호출할 수 있습니다.
결론
정적 메서드와 인스턴스 메서드는 각각 클래스와 클래스의 인스턴스에 연결되어 있습니다. 적재적소에 적합한 메서드를 선택하여 유틸리티 클래스를 설계함으로써, 코드의 가독성과 재사용성을 높일 수 있습니다. 위의 예시를 참고하여, 유틸리티 클래스를 구현하는 데에 있어 정적 메서드와 인스턴스 메서드를 적절히 활용해 보시기 바랍니다.
참고문헌: