프로그래밍/Typescript

타입스크립트에서 클래스의 중요성과 활용

shimdh 2025. 3. 28. 08:25
728x90

타입스크립트는 자바스크립트의 상위 집합으로, 객체 지향 프로그래밍(OOP) 개념을 지원하여 개발자들이 더 구조적이고 유지보수가 용이한 코드를 작성할 수 있도록 돕습니다. 그 중에서도 클래스는 OOP의 핵심 요소로, 코드의 재사용성과 구조를 향상시키는 데 매우 중요한 역할을 합니다. 이번 포스트에서는 타입스크립트에서 클래스의 정의, 접근 제어자, 상속, 정적 프로퍼티 및 메서드에 대해 자세히 살펴보겠습니다.

1. 기본적인 클래스 정의

타입스크립트에서 클래스를 정의하기 위해서는 class라는 키워드를 사용합니다. 클래스는 속성(프로퍼티)과 메서드(함수)를 포함하여 특정 유형의 객체를 생성하는 청사진 역할을 합니다. 다음은 간단한 예제입니다:

class Animal {
    name: string;

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

    speak() {
        console.log(`${this.name}가 소리를 냅니다.`);
    }
}

const dog = new Animal("강아지");
dog.speak(); // 강아지가 소리를 냅니다.

위의 예제에서 Animal이라는 클래스를 정의하였고, 이 클래스는 name이라는 속성을 가지고 있습니다. 생성자(constructor)는 새로운 인스턴스가 만들어질 때 호출되어 name 값을 초기화하는 역할을 합니다. 이처럼 클래스는 객체의 기본적인 특성과 행동을 정의하는 중요한 요소입니다.

2. 접근 제어자

타입스크립트에서는 접근 제어자를 사용하여 클래스의 속성과 메서드에 대한 접근 권한을 설정할 수 있습니다. 주요 접근 제어자는 다음과 같습니다:

  • public: 기본값으로, 어디서든 접근할 수 있습니다.
  • private: 해당 클래스 내에서만 접근할 수 있습니다.
  • protected: 해당 클래스와 그 자식 클래스에서만 접근할 수 있습니다.

예시:

class Person {
    private age: number;

    constructor(age: number) {
        this.age = age;
    }

    public getAge(): number {
        return this.age;
    }
}

const john = new Person(30);
console.log(john.getAge()); // 30
// console.log(john.age); // 오류 발생! 'age'는 private입니다.

위 예제에서는 age 속성이 private로 선언되어 외부에서 직접적으로 접근할 수 없음을 보여줍니다. 이러한 접근 제어자는 클래스의 데이터 보호와 캡슐화를 통해 코드의 안정성을 높이는 데 기여합니다.

3. 상속

클래스는 다른 클래스로부터 상속받아 기능을 확장할 수 있는 강력한 기능을 제공합니다. 이는 코드 재사용성을 높이고 계층 구조를 만들기 위한 효과적인 방법입니다.

예시:

class Dog extends Animal {
    bark() {
        console.log(`${this.name}가 멍멍 짖습니다.`);
    }
}

const myDog = new Dog("내 강아지");
myDog.speak(); // 내 강아지가 소리를 냅니다.
myDog.bark();  // 내 강아지가 멍멍 짖습니다.

여기서는 Animal 클래스를 확장하여 새로운 Dog 클래스를 만들었습니다. 이제 Dog 인스턴스는 부모인 Animal의 메서드를 사용할 수 있게 되며, 이는 코드의 재사용성을 극대화하는 데 큰 도움이 됩니다.

4. 정적 프로퍼티 및 메서드

정적(static) 프로퍼티나 메서드는 인스턴스가 아닌 클래스 자체에 연결됩니다. 이러한 정적 메서드는 클래스의 인스턴스를 생성하지 않고도 호출할 수 있는 유용한 기능을 제공합니다.

예시:

class MathUtils {
    static add(x: number, y: number): number {
        return x + y;
    }
}

console.log(MathUtils.add(5, 10)); // 15

위 예제에서는 정적 메서드인 add()를 통해 두 숫자의 합계를 계산하는 방법을 보여줍니다. 정적 메서드는 유틸리티 함수나 공통적으로 사용되는 기능을 정의하는 데 유용합니다.

결론

타입스크립트에서 클래스 정의는 객체 지향 프로그래밍 패러다임에 기초한 중요한 개념입니다. 이를 통해 복잡한 애플리케이션에서도 명확하고 조직적인 코드를 작성할 수 있으며, 다양한 기능들을 효과적으로 관리하고 재사용할 수 있는 장점이 있습니다. 클래스의 활용은 개발자에게 더 나은 코드 품질과 유지보수성을 제공하며, 소프트웨어 개발의 효율성을 높이는 데 기여합니다.

728x90