타입스크립트 정리 글은 이웅재님의 강의와 강의록을 참고하여 작성하였습니다. (짱짱) 오류가 있다면 언제든지 댓글 부탁드립니다.
TL;DR 타입스크립트에서 주로 사용되는 class의 기초에 대해서 배웁니다. es6에 도입된 class와, public, private, protected 키워드로 class에 접근제어하는 방법을 배우고, class간의 상속 개념을 배웁니다.
1. class 기초
생성자 함수(constructor)가 없으면, 디폴트 생성자가 불린다.
클래스의 프로퍼티 혹은 멤버 변수가 정의되어 있지만, 값을 대입하지 않으면 undefined 이다. => 오브젝트에 프로퍼티가 아예 존재하지 않는다.
접근제어자 (Access Modifier)는 public이 디폴트이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
classPerson { // name과 age는 프로퍼티 // class 바디에는 메소드와 프로퍼티만 포함할 수 있다. name: string = null; age: number = null; constructor(name:string) { this.name = name; // constructor 내부에서 선언한 멤버변수는 this에 바인딩되어 있으므로 언제나 public이다. } // 퍼블릭 } // class에서 default가 public이다. const person = newPerson('Clara'); // 인스턴스를 생성할 때 new 연산자와 함께 호출한 것이 바로 constructor이며 constructor의 파라미터에 전달한 값은 멤버 변수에 할당한다. console.log(person.name) console.log(person.age) // undefined
2. class property
constructor이외에 프로퍼티들을 포함시킬 수 있다.
프로퍼티에도 값을 할당할 수 있다. 호출시 프로퍼티에 다시 값을 할당하게 되면, 마지막에 할당된 값이 출력된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
classPerson { name: string = 'Clara'; age: number = 27;
constperson: Person = newPerson(); person.name = 'nayoung'; person.age = 35; console.log(person); // Person {name: 'nayoung', age: 35} // Person의 프로퍼티가 불린 후에 person.name에 다시 할당된 값이 불리어지므로 결론적으로는 'nayoung'이 출력된다.
3. class Access Modifier
private
절대적으로 접근이 불가능하다.
private 으로 설정된 프로퍼티는 dot(.)으로 접근할 수 없다.
클래스 내부에서는 private 프로퍼티를 사용할 수 있다.
private이 붙은 변수나 함수는 _ 를 이름앞에 붙이는데, 이는 문법이 아니라 널리 쓰이는 코딩 컨벤션이다.
privateprintAge(): void { console.log(`나이는 ${this._age} 살 입니다.`); } }
constperson: Person = newPerson('Mark', 35); person.print(); // 이름은 Mark 이고, 나이는 35 살 입니다. person.printName(); // 이름은 Mark 입니다. // person.printAge(); // (X)