[TS] 클래스

TIL

타입스크립트에서는 클래스의 필드를 선언할 때 타입 주석으로 타입을 함께 정의해야 한다.

class Employee {
  name: string = "";
  hp: number = 0;
  position: string = "";
}

각 필드에 타입을 명시하고 초기값을 설정했다. 타입스크립트에서는 필드 선언 없이 바로 사용할 수 없으므로 반드시 클래스 본문에 필드를 먼저 정의해야 한다.

 

초기값 대신 생성자를 통해 필드를 초기화할 수도 있다.

class Employee {
  name: string;
  hp: number;
  position: string;

  constructor(name: string, hp: number, position: string) {
    this.name = name;
    this.hp = hp;
    this.position = position;
  }
  
  work() {
    console.log("일함");
  }
}

생성자의 매개변수에도 타입을 정의하고, this를 통해 필드에 값을 할당한다. 메서드도 일반 함수처럼 정의할 수 있다.

 

클래스는 타입이다

타입스크립트의 클래스는 타입으로도 사용할 수 있다.

클래스를 타입으로 사용하면 해당 클래스가 생성하는 객체의 타입과 동일한 타입이 된다.

const employeeC: Employee = {
  name: "",
  hp: 0,
  position: "",
  work() {},
};

변수 employeeC를 Employee 타입으로 선언했다. 이 변수는 name, hp, position 프로퍼티와 work 메서드를 가져야 한다.

 

흥미로운 점은 new Employee()로 생성한 객체가 아니어도 구조가 동일하면 Employee 타입으로 인정된다는 것이다. 이는 타입스크립트의 구조적 타이핑 특성 때문이다.

 

상속

타입스크립트에서도 extends 키워드를 사용해 클래스 상속을 구현할 수 있다.

class ExecutiveOfficer extends Employee {
  officeNumber: number;

  constructor(
    name: string,
    hp: number,
    position: string,
    officeNumber: number
  ) {
    super(name, hp, position);
    this.officeNumber = officeNumber;
  }
}

ExecutiveOfficer 클래스는 Employee 클래스를 상속받아 부모 클래스의 모든 필드와 메서드를 물려받는다. 여기에 officeNumber라는 새로운 필드를 추가로 정의했다.

 

생성자에서는 반드시 super()를 먼저 호출해 부모 클래스의 생성자를 실행해야 한다. 그 후에 자식 클래스의 고유한 필드를 초기화할 수 있다.

'TIL' 카테고리의 다른 글

[TS] 인터페이스로 구현하는 클래스 (implements)  (0) 2025.11.03
[TS] 접근 제어자  (0) 2025.11.01
[TS] 인터페이스 선언 합침  (0) 2025.11.01
[TS] 인터페이스 확장  (0) 2025.11.01
[TS] 인터페이스  (0) 2025.11.01
'TIL' 카테고리의 다른 글
  • [TS] 인터페이스로 구현하는 클래스 (implements)
  • [TS] 접근 제어자
  • [TS] 인터페이스 선언 합침
  • [TS] 인터페이스 확장
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19) N
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4) N
        • 네트워크 (1) N
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    algorithm
    useState
    알고리즘
    cs50
    emotion diary
    바닐라 자바스크립트
    함수 타입
    generic
    트러블 슈팅
    Next.js
    클래스
    App Router
    CS
    Trouble Shooting
    자료구조
    배열
    Spa
    typescript
    문자열
    제네릭
    타입 좁히기
    페이지 라우터
    ai 감성 일기장
    javascript
    앱 라우터
    memory
    Pages Router
    인터페이스
    react
    C
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
[TS] 클래스
상단으로

티스토리툴바