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();
|
참고