[typescript] 객체 분해 할당과 프로퍼티 셋터/게터를 사용한 타입스크립트의 객체지향 프로그래밍 패턴

타입스크립트는 JavaScript에 엄격한 타입 체크와 객체지향 프로그래밍의 장점을 결합한 언어로, 다양한 객체지향 프로그래밍 패턴을 구현할 수 있습니다. 이번 포스트에서는 타입스크립트의 객체 분해 할당(Destructuring Assignment)프로퍼티 셋터(Getter)와 게터(Setter)를 활용하여 객체지향 프로그래밍을 구현하는 방법에 대해 살펴보겠습니다.

객체 분해 할당(Destructuring Assignment)

객체 분해 할당은 객체의 프로퍼티를 따로 변수에 할당하는 기능으로, 객체지향 프로그래밍에서 객체를 다룰 때 매우 유용하게 활용됩니다. 예를 들어, 다음과 같이 객체를 분해하여 변수에 할당할 수 있습니다.

// 객체 분해 할당 예제
const user = {
  name: 'John Doe',
  age: 30,
  isAdmin: true
};

const { name, age } = user;

console.log(name); // 'John Doe'
console.log(age); // 30

위 예제에서 user 객체의 nameage 프로퍼티를 각각 nameage 변수에 분해하여 할당하였습니다. 이렇게 할당된 변수들은 이후에 각각의 값을 읽거나 수정할 수 있습니다.

프로퍼티 셋터(Getter)와 게터(Setter)

타입스크립트에서는 클래스 내에 프로퍼티에 대한 접근을 제어하기 위해 프로퍼티 셋터프로퍼티 게터를 정의할 수 있습니다. 이를 통해 객체지향 프로그래밍에서의 캡슐화와 데이터 유효성 검사 등을 구현할 수 있습니다. 다음은 프로퍼티 셋터와 게터를 사용한 예제입니다.

// 프로퍼티 셋터와 게터 예제
class Rectangle {
  private _width: number = 0;
  private _height: number = 0;

  get width(): number {
    return this._width;
  }

  set width(value: number) {
    if (value > 0) {
      this._width = value;
    } else {
      throw new Error('너비는 0보다 커야 합니다.');
    }
  }

  get height(): number {
    return this._height;
  }

  set height(value: number) {
    if (value > 0) {
      this._height = value;
    } else {
      throw new Error('높이는 0보다 커야 합니다.');
    }
  }
}

위 예제에서 Rectangle 클래스는 _width_height를 private으로 선언하고, widthheight에 대해 각각 게터와 셋터를 정의하고 있습니다. 이를 통해 외부에서 widthheight에 대해 값을 할당하거나 읽을 때 캡슐화된 형태로 접근할 수 있으며, 데이터의 유효성을 검사할 수 있습니다.

결론

타입스크립트의 객체 분해 할당과 프로퍼티 셋터/게터는 객체지향 프로그래밍을 구현하고 객체를 다루는 데 매우 유용한 기능입니다. 객체 분해 할당은 객체의 프로퍼티를 손쉽게 다룰 수 있도록 도와주고, 프로퍼티 셋터와 게터는 캡슐화와 데이터 유효성을 보장하는 데 큰 도움이 됩니다. 이러한 기능들을 활용하여 타입스크립트로 객체지향 프로그래밍을 설계하고 구현하는 데 활용할 수 있습니다.