타입스크립트는 자바스크립트의 상위 집합으로, 객체 지향 프로그래밍(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()
를 통해 두 숫자의 합계를 계산하는 방법을 보여줍니다. 정적 메서드는 유틸리티 함수나 공통적으로 사용되는 기능을 정의하는 데 유용합니다.
결론
타입스크립트에서 클래스 정의는 객체 지향 프로그래밍 패러다임에 기초한 중요한 개념입니다. 이를 통해 복잡한 애플리케이션에서도 명확하고 조직적인 코드를 작성할 수 있으며, 다양한 기능들을 효과적으로 관리하고 재사용할 수 있는 장점이 있습니다. 클래스의 활용은 개발자에게 더 나은 코드 품질과 유지보수성을 제공하며, 소프트웨어 개발의 효율성을 높이는 데 기여합니다.
'프로그래밍 > Typescript' 카테고리의 다른 글
TypeScript의 매개변수 데코레이터: 코드의 가독성과 유지보수성을 높이는 방법 (0) | 2025.03.28 |
---|---|
타입스크립트의 제네릭 클래스: 코드 재사용성과 타입 안전성을 높이는 방법 (0) | 2025.03.28 |
타입스크립트의 고급 타입: 타입 별칭의 모든 것 (0) | 2025.03.27 |
타입스크립트의 Void 타입: 함수의 반환 값이 없음을 명확히 하다 (0) | 2025.03.27 |
TypeScript에서 불리언(Boolean) 타입의 중요성 (0) | 2025.03.27 |