class Player {
constructor(
private firstName:string,
private lastName:string,
public nickName:string
) {}
}
const nico = new Player("nico", "las", "니코");
nico.firstName // 타입스크립트에서는 에러 발생. 자바스크립트에서는 미발생.
// 타입스크립트에서는 에러로 인해 컴파일하지 않아서 보호를 받는다.
nico.nickName // 에러 해소
private
키워드는 오로지 타입스크립트가 코드를 보호해주기 위해서만 사용하고 자바스크립트에서는 사용되지 않는다.
abstract class User {
constructor(
private firstName:string,
private lastName:string,
public nickName:string
) {}
getFullName() {
return `${this.firstName} ${this.lastName}`
}
class Player extends User {
}
const nico = new Player("nico", "las", "니코");
nico.nickName
추상 클래스는 다른 클래스가 상송받을 수 있는 클래스다. Player
는 상속 받을 수만 있고 직접적으로 인스턴스를 만들지는 못한다.
abstract class User {
constructor(
private firstName:string,
// protected는 외부에서는 접근하지 못하지만 상속받은 클래스에서는 접근 가능하다.
protected lastName:string,
public nickName:string
) {}
abstract getNickName(): void
}
// Player에서 추상 메소드의 메소드를 구현해야 한다.
class Player extends User {
getNickName
}
강력한 보호 private > protected > public
추상 메소드는 추상 클래스를 상속받는 모든 것들이 구현을 해야하는 메소드들을 의미한다. 추상 클래스 안에서 추상 메소드를 만들 수 있다. 메소드를 구현하지 않고 call signature
만 적어야 한다.