typescript

[typescript]typescript class 생성

직장인코딩 2022. 10. 13. 14:40
반응형

 

역시 js와 다르게 typescript는 정말 powerfull 한 언어이다.

언어가 맞다고 해야되나 결국엔 js이긴 한데

여튼 정말 class를 만들때 편리하기도하고 absctract, private, public, protected 같은 건

사실 js에서 본적도 없고 kotlin에서 잠시 본 거 같기도 하고 여튼

class 를 만들어 보자!

 

export class player {
  constructor (
    private firstName: string,
    private lastName: string
  ){}
}

const shin = new player("shin", "gyu chul")
 

이렇게 아주 편리하게 js 처럼 this 이딴 거안써도된다.

그냥 매개변수 부분에 private 인지 protect인지 public인지 써주면 된다.

저 3개는 나중에 설명

그래서 absctract가 뭐냐면

abstract class 는 생성은 못하지만 js에서 보던 extends 로 다른 클래스가

상속 만 받아올 수 있는 class 라고 생각하면 된다

예를 들어

abstract class user {
  constructor (
    private firstName: string,
    private lastName: string
  ){}
}

export class player extends user {
 
}

const shin = new player("shin", "gyu chul")
 

이렇게 player가 user를 상속해왔다

그러니 abstract class 인 user는 상속만 된다

const shin = new user()

이런거 안된다.
 

그리고 private , protected, public을 알아보자잉!

 

abstract class user {
  constructor(
    private firstName: string,
    protected lastName: string,
    public age: number
  ) {}
}

export class player extends user {
  getLastName() {
    return this.lastName
  }
}

const shin = new player("shin", "gyu chul", 18);
shin.age
 

여기서 firstname은 private이다 이거는

user class 안에서만 사용 가능한 것이다

상속되는 class 인 player에서도 사용할 수없다잉

그리고 protected인 lastname을 보면

저거는 상속되는 거에서 사용할 수 있게 만든 거다잉

그러면 저기 상속된 player에서

getFullName이라는 메소드를 만들 었고

거기안에 내용으로 lastname을 사용 한것이다.

여기에 private인 firstname 못 쓴다잉!!!!

public인 age는 그냥 전역 어디서나 쓸 수 있게 한거다

그냥 클래스 밖인 저공간에서도

shin.age 하면은 사용할 수 있다.

그리고 여기서 하나더 abstract에 abstract method를 쓰면은

상속받는 class는 꼭 그 method를 만들어야 되는데

먼소리냐면

아래 코드와같다잉

 

abstract class user {
  constructor(
    private firstName: string,
    protected lastName: string,
    public age: number
  ) {}
  abstract climing():void
}

export class player extends user {
  climing(): void {
    return
  }
  getLastName() {
    return this.lastName
  }
}

const shin = new player("shin", "gyu chul", 18);
shin.age
 

 

여기서 abstract class 에 abstract climing function을 만들 었고 저거는 void를 return 하게 했다.

void는 빈 거라는 뜻이다.

그러면 꼭 상속받는 player에서는 void를 return 하는 climing 함수를 만들어 주어야 한다.

 

반응형