[typescript] 추상 클래스의 읽기 전용 속성과 선택적 속성

추상 클래스는 TypeScript에서 유용하게 활용되는 개념 중 하나입니다. 추상 클래스는 인스턴스를 생성할 수 없으며, 다른 클래스에서 확장하여 사용할 수 있습니다. 이번 포스트에서는 추상 클래스에서 읽기 전용 속성과 선택적 속성을 어떻게 사용하는지 살펴보겠습니다.

추상 클래스에서 읽기 전용 속성 사용하기

추상 클래스에서 읽기 전용 속성을 사용하려면 해당 속성을 readonly 키워드로 정의하면 됩니다. 이를 통해 속성이 선언될 때 값을 할당하거나 변경할 수 없게 됩니다.

abstract class Animal {
    readonly species: string;
  
    constructor(species: string) {
        this.species = species;
    }
  
    makeSound(): void {
        console.log('Some sound');
    }
}

위의 예시에서 species 속성은 읽기 전용으로 선언되어 있으며, 생성자를 통해 초기화됩니다.

추상 클래스에서 선택적 속성 사용하기

클래스의 속성 중 일부를 선택적으로 만들고 싶을 때는 해당 속성을 ? 기호로 표시합니다. 이를 통해 해당 속성이 있을 수도 있고 없을 수도 있는 선택적인 속성을 정의할 수 있습니다.

abstract class Shape {
    name: string;
    color?: string;
  
    constructor(name: string, color?: string) {
        this.name = name;
        this.color = color;
    }
  
    abstract getArea(): number;
}

위의 예시에서 color 속성은 선택적으로 선언되어 있으며, 생성자를 통해 초기화될 수도 있고 초기화되지 않을 수도 있습니다.

이와 같이 TypeScript에서는 추상 클래스를 통해 읽기 전용 속성과 선택적 속성을 유연하게 사용할 수 있습니다.

참고 자료