TypeScript에서 클래스(Class)를 생성하고 사용하는 방법에 대해 알아보겠습니다.
 클래스(Class)
가장 기본적인 클래스입니다.
필드를 선언해서 사용 가능합니다.
1 2 3 4 5 6 7 8
   | class Player {   firstname: string;   lastname: string; }
  const eden = new Player(); eden.firstname = 'ko'; eden.lastname = 'eden';
  | 
 
생성자에 매개변수를 추가해서 선언할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | class Player {   constructor(     private firstname: string,     private lastname: string,     public nickname: string   ) {} }
  const eden = new Player("ko", "eden", "고수");
 
 
 
  🚫 eden.firstname;
  | 
 
- public: 모든 클래스에서 접근 가능
 
- private: 해당 클래스 내에서만 접근 가능 (자식 클래스에서도 접근 불가)
 
- protected: 해당 클래스와 자식 클래스에서 접근 가능
 
 추상 클래스(Abstract Class)
TypeScript와 객체지향 프로그램이 가지고 있는 엄청 훌륭한 것은 추상 클래스(Abstract Class)라고 생각됩니다.
추상클래스는 다른 클래스가 상속받을 수 있는 클래스입니다. 하지만 이 클래스는 직접 새로운 인스턴스를 만들 수는 없습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | abstract class User {   constructor(     private firstname: string,     private lastname: string,     public nickname: string   ) {     abstract getNickname(): void
      getFullName() {       return `${this.firstname} ${this.lastname}`;     }   } }
 
 
  🚫 const eden = new User("ko", "eden", "고수");
  | 
 
1 2 3 4 5 6 7 8 9 10
   | class Player extends User {      getNickname() {     console.log(this.nickname);   } }
  const eden = new Player('ko', 'eden', '고수'); eden.getNickname(); eden.getFullName();
  | 
 
추상 클래스를 사용하기 위해서는 상속을 받아 사용합니다.
 Static Members
클래스에는 static 멤버가 있을 수 있습니다. 이 멤버는 클래스의 특정 인스턴스와 연결되지 않습니다. 클래스 생성자 객체 자체를 통해 액세스 할 수 있습니다. static 멤버는 동일한 public, protected 및 private과 함께 사용할 수도 있습니다.
1 2 3 4 5 6 7 8 9 10
   | class MyClass {   static x = 0;
    static printX() {     console.log(MyClass.x);   } }
  console.log(MyClass.x); MyClass.printX();
  | 
 
 참고