Typescript-challenge 5

January·2022년 7월 1일
0

class

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 (추상 클래스)

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만 적어야 한다.

0개의 댓글