[하루만에 정복해보는 TS] TS와 Class
2023. 6. 29. 18:48ㆍTrip to TypeScript
TS는 JS Class를 객체 지향형 프로그램 언어처럼 만들어준다. 기존 JS에서는 쓸 수 없었던 접근 제한자 private, public, protected 등을 사용할 수 있게 해준다. 몰론 위 접근 제한자는 실제 js 코드에서는 사라지지만 말이다.
public은 기본값으로 제한이 없으며 private 자기 자신의 클래스 안에서만 사용 가능하다. 마지막으로 protected는 자기 자신 클래스와 상속된 클래스까지 접근이 가능하다.
class User {
constructor(
private firstName:string,
private lastName:string,
public nickname: string
)
}
다음으로 abstract, 즉 추상 클래스에 대해 알아야한다. 추상이라는 말은 언제 어디서 만나도 사람을 힘들게 한다. 하지만, 여기서 만큼은 간단한다. 추상 클래스는 다른 클래스가 상속받을 수 있는, 그냥 사용할 수있는 클래스이다. 다만, 사용만 가능할 뿐 직접 인스턴스를 만들지는 못한다.
abstrast class User {
constructor(
private firstName:string,
private lastName:string,
public nickname: string
) {}
}
class Player extends User {
}
const nico = new Player("nico", "las", "니꼬")
User 클래스를 활용해서 인스턴스를 만드는 것은 불가능하다. 그리고 abstract는 메소드에도 붙을 수 있는데 call signature만을 써주고 내용은 상속받는, 이 클래스를 사용하는 하위 클래스에서 정의해주어야한다.
abstrast class User {
constructor(
private firstName:string,
private lastName:string,
public nickname: string
) {}
abstract getNickName(): void
getFullName(){
return `${this.firstName} ${this.lastName}`
}
}
class Player extends User {
}
const nico = new Player("nico", "las", "니꼬")
이렇게 예시가 있다면 하위 클래스이자 상속받는 클래스 Player는 반드시 추상 메서드 getNickName을 구현해야한다.
abstrast class User {
constructor(
private firstName:string,
private lastName:string,
public nickname: string
) {}
abstract getNickName(): void
getFullName(){
return `${this.firstName} ${this.lastName}`
}
}
class Player extends User {
getNickName() {
console.log(this.nickname)
}
}
const nico = new Player("nico", "las", "니꼬")
nico.getFullName()
'Trip to TypeScript' 카테고리의 다른 글
[하루만에 정복해보는 TS] type 설정해보기 (0) | 2023.06.18 |
---|---|
[하루만에 정복해보는 TS] Implicit Type & Explict Type (0) | 2023.06.18 |
[하루만에 정복해보는 TS] Call signature와 Overloading 그리고 최종보스 Generic (0) | 2023.05.31 |