[typescript] 객체 분해 할당과 프로퍼티 셋터/게터를 사용한 객체의 액세스 제어

자바스크립트와 TypeScript에서 객체를 다룰 때 일반적으로 사용되는 기법 중에 하나가 객체 분해 할당입니다. 객체 분해 할당은 객체의 속성을 변수로 쉽게 분해하여 가져올 수 있는 방법을 제공합니다. 또한, 프로퍼티 셋터프로퍼티 게터를 통해 객체의 속성에 접근을 제어하는 방법도 있습니다.

객체 분해 할당

일반적으로 우리는 객체의 특정 속성을 쉽게 가져오려 할 때 다음과 같이 . 연산자를 사용합니다.

const person = {
  name: "Alice",
  age: 30,
  job: "Engineer"
};

const name = person.name;
const age = person.age;

하지만 객체 분해 할당을 사용하면 좀 더 간결하고 가독성이 좋아집니다.

const { name, age } = person;

위의 예제에서 const { name, age } = person;person 객체의 nameage 속성을 분해하여 nameage 변수에 할당하는 것을 의미합니다.

프로퍼티 셋터와 프로퍼티 게터

프로퍼티 셋터와 프로퍼티 게터는 접근자 프로퍼티(Accessor Property)라고도 불리며, 객체의 속성에 값을 설정하거나 가져올 때 자체적으로 작동하는 메커니즘을 제공합니다.

프로퍼티 셋터와 게터를 사용하여 객체의 속성에 접근을 제어하는 예제를 살펴봅시다.

class Circle {
  private _radius: number = 0;

  get radius(): number {
    return this._radius;
  }

  set radius(value: number) {
    if (value < 0) {
      throw new Error('Radius cannot be negative');
    }
    this._radius = value;
  }
}

const circle = new Circle();
circle.radius = 10; // set radius using setter
console.log(circle.radius); // get radius using getter

위의 Circle 클래스에서 radius 속성에 대한 프로퍼티 셋터와 게터를 정의했습니다. 이를 통해 값을 설정할 때(셋터) 유효성을 검사하거나 특정 로직을 추가로 수행할 수 있습니다. 또한, 값을 가져올 때(게터) 추가적인 로직을 수행할 수도 있습니다.

객체 분해 할당과 프로퍼티 셋터/게터를 사용하면 코드의 가독성을 높이고 객체의 속성에 대한 접근을 더욱 효율적으로 제어할 수 있습니다. TypeScript에서는 이러한 기능을 활용하여 안정적이고 응집력 있는 코드를 작성할 수 있습니다.