<aside> 💡 최신 자바 스크립트에 대해 타입스크립트가 어떻게 적용되는지 확인해 봅시다!
</aside>
객체를, 로직의 일부를 관리하는 객체로 분리할 수 있습니다. 그런데 Class는 일종의 객체의 청사진으로, 객체의 형태, 포함해야하는 데이터 그리고 메소드들을 등의 객체들이 클래스에 포함되어 있습니다. 그리고 이러한 객체는 클래스내의 인스턴스가 됩니다.
예를 들어, 부서를 만들어 주는 class
가 있다고 가정해 보겠습니다. 일단 비어있는 클래스는, 아래와같은 모습을 보이고 있습니다.
class Department {}
그런데 부서에는 다양한 요소 들이 존재합니다. 대표적으로는 부서명이 존재하겠죠?
class Department {
//클래스 필드를 이용해서 클래스를 만들어준 모습입니다
name:string;
}
그런데 이러한 형태로는 Property 'name' has no initializer and is not definitely assigned in the constructor.
이러한 에러를 만나게 됩니다. 에러가 발생한 원인은 바로 생성자메서드를 이용해 클래스를 초기화 해주는 일이 필요하기 때문입니다.
그래서 아래와 같은 생성자 메소드를 이용해, 추가적인 설정이 필요합니다
private employees: string[] = [];
//클래스 필드를 이용해서 클래스를 만들어준 모습입니다
name:string;
//생성자 함수를 이용해 주어 초기화 해 주어야합니다
constructor(n:string) {
this.name = n;
}
}
이러한 생성자 메소드의 경우에는 몇개의 특징을 지니고 있는데, 생성자 메소드는 반환 하는 타입을 지정할 수 없는데, 이는 클래스 인스턴스가 클래스에서 항상 반환되기 때문이며, 생성자는 type parameters
를 가질수 없습니다.
클래스에서의 함수 속성을 메서드라고 합니다. 이제 부서명을 받아, 사용자에게 부서명을 보여주는 함수를 통해 메서드를 확인해 보겟습니다
class Department {
//클래스 필드를 이용해서 클래스를 만들어준 모습입니다
name: string;
//생성자 함수를 이용해 주어 초기화 해 주어야합니다
constructor(n: string) {
this.name = n;
}
makeDepartment() {
console.log(`Department : ${this.name}`);
}
}
메서드 역시 클래스 내부의 값을 참조해 주기 위해서, this
를 이용해 줄 것 입니다.