본문 바로가기
타입스크립트(typescript)/개념

[typescript] 타입스크립트 클래스(class)

by Doo Hee 2024. 7. 15.
Document

📝클래스

클래스란?

클래스란 공통된 성질을 가진 객체를 정의한 것이다. 객체지향 프로그래밍에서 인스턴스를 생성하기 위한 변수와 메소드를 정의하는 일종의 틀을 말한다.

 

자바스크립트와 마찬가지로 타입스크립트에서도 클래스를 생성할 수 있다. 그렇다면 타입스크립트에선 어떻게 클래스를 만들까?

 

1) 자바스크립트

자바스크립트는 2가지 방식으로 객체를 선언할 수 있다. 생성자 함수와 클래스를 이용한 것이다. 아래 코드를 보자.

// 생성자 함수
function Person(name, year) {
  this.name = name;
  this.yar = year;
}

// 클래스
class Person {
  name;
  year;

  constructor(name, year) {
    this.name = name;
    this.year = year;
  }
}


첫번째 코드는 생성자 함수를 이용한 것이고 두번째 코드는 class와 생성자 키워드를 이용하여 만든 것이다. 두번째 코드의 경우, 클래스의 속성을 적지 않아도 실행은 잘 되지만 좋은 개발자라면 속성을 적는게 좋다.

 

2) 타입스크립트

타입스크립트에선 자바스크립트 2번째 방법처럼 class 키워드를 이용하여 클래스를 생성한다. 자바스크립트와 다른 점은 클래스의 속성을 반드시 적어줘야 한다는 점각 속성에 타입을 부여해야 한다는 점이다.

class Person {
  name: string;
  year: number;

  constructor(name: string, year: number) {
    this.name = name;
    this.year = year;
  }

  protected sayName() {
    console.log(`안녕하세요. 저는 ${this.name}입니다.`);
  }
}

 


 

클래스 접근 제어자

클래스의 타입을 정의할 때 클래스 접근 제어자를 사용하면 클래스 속성의 노출 범위를 정의할 수 있어 유용하다. 클래스 접근 제어자는 public, private, protected가 존재한다.

  • public: 클래스 안에 선언된 속성과 메서드를 어디서든 접근할 수 있으며, 클래스 접근 제어자를 설정하지 않을 경우, 기본값은 public으로 설정된다.
  • private: 클래스 코드 외부에서 클래스 속성과 메서드를 접근할 수 없다.
  • protected: private처럼 외부에서 클래스 속성과 메서드를 접근할 수 없지만 상속받은 클래스에서는 사용할 수 있다.