타입스크립트로 프로젝트를 개발할 때, 객체 분해 할당과 프로퍼티 셋터/게터를 적절히 활용하여 코드의 가독성을 높이고 유지보수성을 개선할 수 있습니다. 이번 글에서는 객체 분해 할당과 프로퍼티 셋터/게터를 사용한 타입스크립트 프로젝트의 구조 설계 방법에 대해 알아보겠습니다.
객체 분해 할당(Object Destructuring)이란?
객체 분해 할당은 객체의 프로퍼티를 추출하여 여러 변수에 할당하는 편리한 문법입니다. 예를 들어, 다음과 같이 객체를 분해하여 변수에 할당할 수 있습니다.
const person = {
firstName: 'John',
lastName: 'Doe'
};
const { firstName, lastName } = person;
console.log(firstName); // 'John'
console.log(lastName); // 'Doe'
객체 분해 할당을 활용하면 객체의 프로퍼티를 간편하게 추출하여 다양한 곳에서 활용할 수 있습니다.
프로퍼티 셋터/게터(Property Setter/Getter) 활용
프로퍼티 셋터/게터는 객체의 프로퍼티에 값을 할당하거나 가져올 때 특정 동작을 추가할 수 있는 기능입니다. 이를 통해 객체의 상태를 제어하고 감시할 수 있습니다. 예를 들어, 다음과 같이 클래스 내부에서 프로퍼티 셋터/게터를 활용할 수 있습니다.
class Person {
private _age: number = 0;
get age(): number {
return this._age;
}
set age(value: number) {
if (value >= 0) {
this._age = value;
} else {
console.log('Age cannot be negative.');
}
}
}
const person = new Person();
person.age = 30; // 프로퍼티 셋터를 통해 값 설정
console.log(person.age); // 프로퍼티 게터를 통해 값 조회
person.age = -10; // 'Age cannot be negative.' 출력
프로퍼티 셋터/게터를 활용하여 객체의 상태를 유효하게 관리할 수 있습니다.
객체 분해 할당과 프로퍼티 셋터/게터를 활용한 구조 설계
타입스크립트 프로젝트에서 객체 분해 할당과 프로퍼티 셋터/게터를 조합하여 코드를 구조화하는 방법을 살펴보겠습니다.
interface User {
firstName: string;
lastName: string;
}
class UserAccount {
private _user: User;
constructor(user: User) {
this._user = user;
}
get user(): User {
return this._user;
}
set user(user: User) {
if (user.firstName && user.lastName) {
this._user = user;
} else {
console.log('Invalid user data.');
}
}
}
const userData = {
firstName: 'John',
lastName: 'Doe'
};
const userAccount = new UserAccount(userData);
console.log(userAccount.user); // { firstName: 'John', lastName: 'Doe' }
const { firstName, lastName } = userAccount.user;
console.log(firstName, lastName); // 'John' 'Doe'
위 예시에서는 User
인터페이스를 정의하고, UserAccount
클래스에서 프로퍼티 셋터/게터를 활용하여 유효한 사용자 데이터인지 확인하고 설정하고 있습니다. 또한 객체 분해 할당을 통해 사용자 데이터를 추출하여 활용하고 있습니다.
마치며
객체 분해 할당과 프로퍼티 셋터/게터는 타입스크립트 프로젝트의 구조 설계에서 유용하게 활용될 수 있는 기능입니다. 이를 통해 코드의 가독성을 높이고 유지보수성을 개선할 수 있습니다. 언급된 기능들을 적절히 활용하여 타입스크립트 프로젝트를 설계하고 개발하는 데 도움이 되기를 바랍니다.
참고: 타입스크립트 핸드북 - 객체 분해 할당 타입스크립트 핸드북 - 프로퍼티 게터/셋터