Getters and Setters in TypeScript

Yunwoo Ji·2021년 6월 22일
3

TypeScript

목록 보기
1/1
post-thumbnail

Ref: https://www.typescripttutorial.net/typescript-tutorial/typescript-getters-setters/

Introduction to TypeScript Getters and Setters

아래의 Person 클래스는 age, firstName, lastName 세 프로퍼티를 갖는다.

class Person {
    public age: number;
    public firstName: string;
    public lastName: string;
}

Person 클래스의 어느 속성에 접근하기 위해서는 다음과 같이 해야 한다.

let person = new Person();
person.age = 26;

우리가 age 프로퍼티에 유저가 입력한 값을 할당한다고 가정해보자.

person.age = inputAge;

inputAge는 어느 숫자든 될 수 있다. 나이의 값으로 타당한지 보장하기 위해서는 할당하기 전에 아래와 같이 체크할 수 있다.

if( inputAge > 0 && inputAge < 200 ) {
    person.age = inputAge;
}

이 체크를 할당하기 전 모든 곳에서 사용하는 것은 장황하다.

체크를 반복하는 것을 피하기 위해서, 우리는 getters와 setters를 사용할 수 있다. getters와 setters는 우리가 클래스의 프로퍼티로의 접근을 통제할 수 있게 만들어준다.

  • getter 메소드는 프로퍼티에 있는 값을 리턴한다. getter은 accessor라고도 불린다. getter 메소드는 get 키워드로 시작한다.
  • setter 메소드는 프로퍼티의 값을 업데이트한다. setter는 mutator라고도 알려져 있다. setter 메소드는 set 키워드로 시작한다.
class Person {
    private _age: number;
    private _firstName: string;
    private _lastName: string;

 
    public get age() {
        return this._age;
    }

    public set age(theAge: number) {
        if (theAge <= 0 || theAge >= 200) {
            throw new Error('The age is invalid');
        }
        this._age = theAge;
    }

    public getFullName(): string {
        return `${this._firstName} ${this._lastName}`;
    }
}

이제 우리는 age setter 메소드에 다음과 같이 접근할 수 있다.

let person = new Person();
person.age = 10;

주목할 것은 setter를 작성할 때 일반적인 메소드와 같이 괄호를 사용하지는 않는다. 우리가 person.age를 부르면, age setter 메소드가 호출된다.

person.age = 0;

만약 우리가 age의 값으로 타당하지 않은 값을 할당하면, setter는 아래와 같이 error를 던진다.

Error: The age is invalid

그리고, 우리가 person.age에 접근할 때, age getter가 호출된다.

console.log(person.age);

Summary

  • TypeScript getters/setters는 클래스의 프로퍼티에 접근하는 것을 통제하기 위해 사용한다.
  • getters/setters는 accessors/mutators로 또한 알려져 있다.
profile
Front-End !

0개의 댓글