Typescript #3

gyunho·2023년 5월 13일

헐레벌떡 TypeScript

목록 보기
2/2

Typescript의 객체지향

  • 타입스크립트는 객체지향언어이다. 그래서 자바스크립트에서 구현하기 어려웠던 추상화를 쉽게 구현할 수 있다.

  • 타입스크립트에서는 디폴트 생성자가 존재하나보다. 저기 argument에 멤버들을 넣었음에도 자동으로 값이 들어가는 것을 보면 유추할 수 있다.

이와 달리 자바스크립트에서는 constructor에 직접 값을 대입하고 있따.

Abstract Class

  • 추상클래스는 직접 인스턴스를 만들 수는 없지만 상속할 수는 있다.
  • 추상 메소드는 Call Signature로만 적을 수 있다. 추상메소드는 추상클래스를 상속받는 클래스에서 반드시 구현해야하는 메소드를 말한다.

1. private

- private을 사용하면 내 클래스에서만 접근이 가능하다. 상속받은 클래스나 다른 곳에서 사용이 불가
2. public

- public은 private과는 달리 어디서든 자유롭게 접근이 가능하다.
3. protected

- protected는 자신의 클래스와 자신을 상속받은 클래스에서만 접근이 가능하다.

그렇기 때문에 추상클래스의 멤버들은 protected를 사용한다. private이면 상속받은 클래스에서 사용할 수 없기 때문이다.

dictionary 예제

  • 이 형태는 우리가 property의 이름은 모르지만 타입은 알고있을 때 사용한다.

add메소드와 del메소드 만듦

Interface

type과 차이

  • type형태와 거의 비슷하지만 다른점이 존재한다.

    • type은 alias를 비롯해 객체의 형태를 지정할 수 있다. 하지만 interface는 오직 객체의 형태만 정할 수 있다.

    • interface는 상속이 가능하다. 그런데 type형태도 상속과 비슷하게 사용할 수 있다.

    • interface는 다중선언이 가능하다. 하지만 type은 불가능하다.

    interface User{
    	name:string
    }
    interface User{
    	age:number
    }

그래서 interface는 오직 오브젝트의 형태를 정할때만 사용한다는 것을 기억하자.

class와 차이

  • 우리는 종종 다음과 같은 코드는 만든다.
  • 근데 위의 코드의 문제점은 JS에서는 추상클래스가 존재하지 않는다. 우리가 작성한 추상클래스는 JS에서 일반적인 클래스로 바뀐다. 왜냐면 JS에는 추상클래스가 존재하지 않기 때문이다.

  • 하지만 저기서 추상클래스는 상속받을 클래스의 형태를 지정해주는 역할을 한다. 그렇다면 우리는 interface와 비슷하게 바라볼 수 있다.

  • interface를 사용하면 결정적으로 JS에서 코드가 가벼워진다. 이외에도 달라진점이 몇가지가 있는데

    • 일단 상속하는 키워드가 바뀌었다. implements로
    • JS에서 코드가 짧아졌다. 이는 JS에는 interface가 없기 때문

  • 주의할점은 public밖에 사용할 수 없다.

  • 추가적으로 interface를 반환하거나 매개변수로 받을 수 있다. 그럴땐 당연히 저 객체의 모양을 가지면 된다.

profile
복습용

0개의 댓글