[TS] get과 set

곽태민·2023년 9월 8일
0

TIL

목록 보기
46/65
post-custom-banner

getsetClass 내에서 속성을 읽고 쓸 때 사용되는 특별한 메서드다. 이런 기능을 사용하면 객체의 속성에 접근하는 동작을 Customize하고 추가 동작을 수행할 수 있다.

get (Getter)


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

set (Setter)


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을 같이 사용하기


getset을 같이 사용하면 객체의 속성을 읽고 쓸 때 다양한 동작을 추가할 수 있다.

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에서 getset을 사용하면 속성 값에 대한 유효성 검사와 변환을 손쉽게 추가 할 수 있다.

profile
Node.js 백엔드 개발자입니다!
post-custom-banner

0개의 댓글