TS 4.0~ 4.5

은채·2022년 9월 24일
0

NOMAD CODERS

목록 보기
9/9
post-thumbnail

Classes

  • Player 클래스를 만들 때,
    • JS => constructor 안에 this 형식으로 만들어준다
    • TS => 파라미터를 작성하면, constructor 를 자동으로 만들어준다
    • TS => private 혹은 public property를 만들 수 있다 (자바스크립트로 컴파일 되지 않음)
      • nickname 만 사용할 수 있게 만들어준다

추상클래스

  • 다른 클래스가 상속받을 수만 있는 클래스
  • 직접 새로운 인스턴스를 만들 수는 없음

  • 추상클래스 안의 메서드
    • pivate, public 도 작동 가능 ( 자바스크립트에서는 무시되고 실행되니 문제가 됨 )

추상메소드

  • 메소드 : 클래스 안에 존재하는 함수
  • 메소드를 클래스 안에서 구현하지 않고 메소드의 call signature 만 적는 것
  • 구현 부분 :
  • 해보기
    • User 추상 클래스가 getNickName 이라는 추상 메소드를 갖는다
    • 이 메소드의 리턴값은 void
    • call signature 만 작성
    • 이를 상속받은 Player 클래스에서는 getNickName을 구현해야 함
    • 즉, 추상 메소드는 추상 클래스를 상속받는 모든 것들이 구현을 해야 하는 메소드

Protected

  • private

    • 해당 클래스의 인스턴스, 메소드에서는 접근이 가능하지만 추상 클래스의 경우 인스턴스화 할 수 없음
    • 필드가 외부로부터는 보호되지만, 다른 자식 클래스에서는 사용되기를 원한다면 사용 할 수 없음
    • 아예 밖에서는 사용 할 수 없지만, 상속받은 클래스 안에서는 사용 할 수 있음
  • public 프로퍼티를 보여주고는 싶지만, 수정을 할 수 없게 만드려면?
    • readonly 사용하기

Interface

type vs interface

  • type 의 경우 단일한 타입 / 배열 / 객체의 형태를 가질 수 있다.

  • interface 의 경우 객체 형태만 가능하다

  • typed의 상속, 연산자를 사용함

  • interface의 상속, 클래스와 비슷함
  • 객체지향 프로그램의 개념을 활용해서 디자인되었기 때문에 비슷

  • interface는 property 축적이 가능
  • 같은 이름으로 3개의 인터페이스를 만들었지만, 타입스크립트가 하나로 합쳤다

  • type 에서는 불가능

  • interface 는 컴파일 시 js로 바뀌지 않고 사라진다.

추상클래스 인터페이스로 바꾸기

  • implements 를 사용한다!
  • JS로 컴파일 시 User 인터페이스가 컴파일 되지 않아 매우 가벼워짐 ~

  • User 인터페이스를 상속받은 Player 클래스
  • 에러가 계속 발생 => 인터페이스를 상속할 때는 property를 private/protected 로 만들지 못함

  • public 으로만 사용할 수 있음

  • 여러 인터페이스 동시에 사용하기

  • 함수에서 사용해보기
  • argument에 인터페이스를 사용하여, argument의 객체 모양을 지정하기
  • return 에도 인터페이스를 사용할 수 있음

  • new 형식이 아닌, interface 내의 내용을 그대로 작성해주면 됨!
profile
반반무마니

0개의 댓글