[typescript] 객체 분해 할당과 프로퍼티 셋터/게터를 사용한 클래스 디자인 패턴

TypeScript는 객체지향 프로그래밍을 지원하는 강력한 언어입니다. 이번 포스트에서는 TypeScript의 객체 분해 할당 및 프로퍼티 셋터/게터를 활용하여 클래스를 디자인하는 방법에 대해 알아보겠습니다.

1. 객체 분해 할당

객체 분해 할당은 객체의 프로퍼티를 추출하여 여러 변수에 할당하는 기능을 제공합니다. 이를 활용하면 클래스의 생성자나 다른 메서드에서 각각의 프로퍼티에 대해 개별적인 파라미터를 지정할 필요가 없어집니다.

예를 들어, 다음과 같은 User 클래스가 있다고 가정해봅시다.

class User {
  constructor(private name: string, private age: number) {
  }
  
  // ...
}

이 User 클래스를 객체 분해 할당을 사용하여 다음과 같이 인스턴스화할 수 있습니다.

const user = { name: 'John', age: 30 };
const { name, age } = user;
const newUser = new User(name, age);

2. 프로퍼티 셋터/게터 활용

프로퍼티 셋터/게터를 사용하면 클래스의 프로퍼티에 접근하는 동작을 세밀하게 제어할 수 있습니다. 이는 객체의 속성에 접근할 때 일관성 있는 인터페이스를 제공하며, 내부 구현을 캡슐화하는 데 도움이 됩니다.

다음은 프로퍼티 셋터/게터를 사용한 User 클래스의 예시입니다.

class User {
  private _name: string = '';

  get name(): string {
    return this._name;
  }

  set name(newName: string) {
    this._name = newName;
  }
}

위의 예제에서 name 프로퍼티에 접근할 때 프로퍼티 셋터/게터를 통해 값을 설정하거나 반환할 수 있습니다.

3. 프로퍼티 셋터/게터와 객체 분해 할당의 조합 활용

프로퍼티 셋터/게터와 객체 분해 할당은 함께 사용될 때 더욱 강력한 기능을 발휘합니다.

아래의 예시는 프로퍼티 셋터/게터를 사용하여 User 클래스의 객체를 생성하고, 객체 분해 할당을 통해 객체의 프로퍼티를 추출하는 방법을 보여줍니다.

class User {
  private _name: string = '';

  get name(): string {
    return this._name;
  }

  set name(newName: string) {
    this._name = newName;
  }
}

const user = new User();
user.name = 'Alice';
const { name } = user;
console.log(name); // 출력: Alice

결론

TypeScript의 객체 분해 할당과 프로퍼티 셋터/게터는 클래스 설계를 간소화하고, 더 안전하고 확장 가능한 코드를 작성하는 데 도움이 됩니다. 이러한 기능들을 올바르게 활용하면 보다 간결하고 유연한 코드를 작성할 수 있습니다.