| 접근제한자와 getter setter
ES6
get set 은 es6 컴파일이 되기때문에
tsconfig.js 에 들어가서 target을 ES6 으로 변경한다
접근제한자
만약 아래와 같은 클래스가 있다고 하자
class UserInfo {
name: string;
age: number;
city: string;
constructor(name:string,age: number, city: string){
this.name = name;
this.age = age;
this.city = city;
}
}
const user = new UserInfo("jae", 25, "seoul");
console.log(user.name, user.age, user.city);
user.age = 27;
console.log(user.name, user.age, user.city);
이것은 좋은 패턴이 아니다
밖에서 누군가가 데이터를 임의적으로 바꿀 수 있다는것은 무결성유지에 좋은 패턴이 아니다
그래서 사용하는 것이 바로 접근제한자 이다
접근을 get 설정을 set 이라고 하면
public //접근 get 설정 set 2개가 외부, 내부 자유로움
protected //접근 get 설정 set 2개가 자기 자신한테만 허용 + 자신을 상속한 자식한테도 허용
private //접근 get 설정 set 2개가 자기 자신한테만 허용
Getter setter
class UserInfo {
public name: string;
public age: number;
private _city: string; //private은 앞에_(언더바)를 붙이는게 관례
constructor(name:string,age: number, city: string){
this.name = name;
this.age = age;
this._city = city;
}
get city():string{
return this._city
}
set city(newCity: string){
this._city = newCity;
}
여기서 만약 새로운 객체를 만들고
객체.city를 호출하면 게터가 자동으로 실행되고
객체.city = 새로운 값 이러면 세터가 자동으로 실행된다
const user = new UserInfo("jae",22,"seoul");
console.log(user.city);
user.city="busan";
console.log(user.city);
웬만하면 private + getter,setter 조합을 이용
반응형
'웹 개발 > #️⃣ TypeScript' 카테고리의 다른 글
TS | 대수타입 -union, intersection (0) | 2023.06.01 |
---|---|
TS | 클래스 - readonly와 생성자 (0) | 2023.06.01 |
TS | null과 undefined (0) | 2023.05.30 |
TS | never (1) | 2023.05.30 |
TS | 함수 타입과 type (0) | 2023.05.30 |