본문 바로가기

모카 스터디/JavaScript

한입크기로 잘라먹는 타입스크립트 - 인터페이스와 클래스 - [인프런]

섹션 5 인터페이스

인터페이스

오버로딩을 구현하고 싶으면 호출 시그니처를 사용

 

인터페이스 확장하기

 

중복된 트로퍼티가 많아서 확장을 이용

 

 

또한 인터페이스는 객체 형식이면  상속이 가능하다.

 

 

 

인터페이스 합치기

라이브러리 모듈 보강 할때 말곤 크게 않쓰인다. 

 

 

 

섹션 6 클래스

타입스크립트의 클래스

왼쪽과 같이 타입스크립트의 클래스에서는 모든 필드의 타입을 다 적어줘야 오류가 나지 않는다. 

타입을 적어주지 않으면 모두 any로 추론되어 에러가 난다.(물론 config파일에서 옵션을 변경하여 안뜨게도 할수 있다.)

 

 

또한 오른쪽과 같이 상속을 했을 시 super를 꼭 써야한다.

 

 

접근 제어자

원래는 기본인 public으로 설정되어있다. ==> 그럼 인스턴스에서 자유롭게 접근해서 사용이 가능하다.

 

private으로 설정을 하면 인스턴스에서 점표기법으로 접근 이 불가능하다.

(참고로 readonly는 접근해서 읽기는 가능했지만 private은 접근해서 읽기 조차 불가능.)

그래서 클래스 내부의 메서드를 사용해서 접근한다.

 

protected는 외부에서는 접근 불가 하지만 상속받은 클래스에서는 부모 클래스로 접근이 가능.

또한 생성자에서 접근제어자를 붙이면 자동으로 필드로 그와같은 접근제어자를 가진 필드를 생성하며 필드의 값 초기화도 자동으로 한다.

즉,  생성자에 접근제어자를 붙일시에는 필드에서의 코드는 생략해야 하며 중괄호 의 this도 생략 가능한다.

 

인터페이스와 클래스

인터페이스를 구현하는 클래스

타입스크립트의 인터페이스는 클래스의 설계도 역할을 할 수 있습니다. 

쉽게말해 다음과 같이 인터페이스를 이용해 클래스에 어떤 필드들이 존재하고, 

어떤 메서드가 존재하는지 정의할 수 있습니다.

 

또한 인터페이스의 필드는 무조건 public이다.

그래서 private나 protected가 필요하면 따로 클래스에서 정의를 해줘야한다.

 

인터페이스 CharacterInterface는 name, moveSpeed 프로퍼티와

 move 메서드를 갖는 객체 타입을 정의합니다. 

그런데 이 인터페이스를 클래스에서 implements 키워드와 함께 사용하면 

이제부터 이 클래스가 생성하는 객체는 모두 이 인터페이스 타입을 만족하도록 클래스를 구현해야 합니다.