get
과 set
은 Class 내에서 속성을 읽고 쓸 때 사용되는 특별한 메서드다. 이런 기능을 사용하면 객체의 속성에 접근하는 동작을 Customize하고 추가 동작을 수행할 수 있다.
Getter는 Class 내의 속성 값을 읽을 때 호출되는 메서드로 아래와 같이 정의한다.
class Example {
private _value: number = 0;
get value(): number {
// 추가 동작 수행
return this._value;
}
}
get
키워드 다음에 메서드의 이름을 정의한다. (위 코드에서는 value
). 이 메서드는 일반적으로 함수처럼 호출되지 않고, 객체의 속성 값을 읽을 때 자동으로 호출된다.
const example = new Example();
console.log(expmple.value) // 0
Setter는 Class 내의 속성에 값을 할당할 때 호출되는 메서드로, 아래와 같이 정의한다.
class Example {
private _value: number = 0;
set value(newValue: number) {
// 추가 동작 수행
this._value = newValue
}
}
set
키워드 다음에 메서드의 이름을 정의한다. (위 코드에서는 value
). 이 메서드는 일반적인 함수처럼 호출되지 않고, 객체 속성에 값을 할당할 때 자동으로 호출된다.
const example = new Example();
example.value = 42; // _value 속성에 42를 할당하고 추가 동작 수행.
get
과 set
을 같이 사용하면 객체의 속성을 읽고 쓸 때 다양한 동작을 추가할 수 있다.
class Temperature {
private _celsius: number = 0;
get celsius(): number {
return this._celsius;
}
set celsius(value: number) {
if (value < -273.15) {
throw new Error('Temperature is too low.');
}
this._celsius = value;
}
get fahrenheit(): number {
return this._celsius * 1.8 + 32;
}
set fahrenheit(value: number) {
const celsiusValue = (value - 32) / 1.8;
this.celsius = celsiusValue;
}
}
const temp = new Temperature();
temp.celsius = 25; // Setter를 사용하여 온도를 설정
console.log(temp.celsius); // Getter를 사용하여 온도를 읽음
temp.fahrenheit = 77; // Fahrenheit로 설정, Setter를 사용하여 celsius 값도 자동으로 변환
console.log(temp.celsius); // Celsius로 변환된 값을 읽음
Typescript에서 get
과 set
을 사용하면 속성 값에 대한 유효성 검사와 변환을 손쉽게 추가 할 수 있다.