타입스크립트 클래스(class) 사용법

클래스에서 타입정의 방법은 함수 정의 방법과 비슷하며, 생성자 메서드에서 사용될 속성들을 미리 정의해주어야합니다.

class User {
   // 사용될 name 속성의 타입을 정의
  name: string;
   // 파라미터 타입 정의
  constructor(name: string) {
    this.name = name;
  }
  // 파라미터 및 리턴 타입 정의
  introduce(text: string): void {
    return console.log(text);
  }
}

클래스 접근 제어자

클래스의 멤버 변수와 메서드에 대한 접근 권한을 제어하는 키워드입니다. 접근 제어자를 사용하여 클래스의 내부 구조를 캡슐화하고, 외부에서의 접근을 제한하거나 허용할 수 있습니다.

타입스크립트에서는 다음 **네 가지 접근 제어자(public, private, protedcted, readolny)**를 사용할 수 있습니다.

예시 코드로 접근 제어자 알아보기

아래 코드에서 public 접근 제어자를 이용하여 은행 클래스를 구현하였습니다.

class에서 접근 제어자의 키워드를 붙이지 않으면 기본적으로 public 접근 제어자가 부여됩니다,

이 코드에서 발생할 수 있는 문제점은 money 속성을 외부에서 접근가능하도록 public 접근 제어자로 지정하였기 때문에 외부에서 money를 맘대로 조작할 수 있는 문제가 발생합니다.

class Bank {
  public money: number;

  constructor(money: number) {
    this.money = money;
  }

  public withdraw(money: number) {
    const currentMoney = this.money - money;
    if (currentMoney > 0) {
      console.log(`예금 인출이 성공적으로 이루어졌습니다. 현재 남은 예금은 ${currentMoney}원 입니다.`);
    } else {
      console.log(`예금 인출 잔액이 부족합니다. 현재 남은 예금은 ${currentMoney}원 입니다.`)
    }
  }

  public inquiry() {
    console.log(`현재 예금 잔액은 ${this.money}원 입니다.`)
  }
}

const myBank = new Bank(1000);

myBank.withdraw(100);
myBank.withdraw(1000);
// 외부에서 money 조작 가능
myBank.money = 9999999;
// 현재 금액은 9999999원이 됨
myBank.inquiry();