[TypeScript] Interface

Gomao·2023년 4월 4일
1

TypeScript

목록 보기
3/3

이번 포스팅에 다룰 내용

  1. Class (객체 지향 프로그래밍)

2. Interface <--------

  1. Generic

Interface가 뭐고 언제 사용하는거지?

Interface는 타입 체크를 위해 사용되는 문법임. 구현되지 않고, 상속되지도 않음.

Interface를 사용하는 경우
1. 객체의 구조를 정의할 때
2. 함수의 타입을 정의할 때
3. 클래스의 타입을 정의할 때
4. 다른 인터페이스나 타입을 확장(extend)할 때

Interface의 기본 사용법

실행 스크린샷으로 간단히 알아보자.

이와 같이 객체/함수의 구조를 정의해주는 데 사용할 수 있다.

또한, interface도 extends 명령어를 사용하여 상속/확장이 가능하다.

Optional Properties (선택적 프로퍼티)

사용 해도 되고 안 해도 되는 property 이다.
예제를 하나 보고 가도록 하자.

이와 같이 interface에 정의된 값을 상속하지 않으면 즉시 error가 발생한다.

하지만 다음과 같이 age를 optional properties로 선언해 준다면 error가 발생하지 않는다.

옵션을 선택적으로 적용할 수 있고,

인터페이스에 정의되지 않은 속성에 대해 인지시켜줄 수 있다는 장점이 있다.

Readonly Properties (읽기전용 프로퍼티)

처음 생성될때만 선언 가능하고, 이후 수정이 불가능한 property이다.
이번에도 예제를 보자.

interface에서 x, yreadonly로 선언하였기 때문에,
최초 선언 시에는 0, 0으로 선언 가능하다.

하지만 이후에 값을 수정하려고 하면 불가능하다!
마치 JavaScript의 const로 선언된 변수와 비슷하다고 생각하면 될 것 같다.

처음 생성될 때만 선언 가능하고 이후 수정이 불가능하다.

Excess Property Checks (초과 프로퍼티 검사)

인터페이스에서 정의하지 않은 속성들을 추가로 사용하고 싶을 때 사용 가능한 방법이다.
간단히 사용법만 체크하고 넘어가겠다.

interface에서 엄밀하게 정의한 property는 name 뿐이지만,
gomao 객체에서 age, favorite property에 error가 발생하지 않는다.

그런데 솔직히 지금 드는 생각.

이럴거면 interface를 왜 쓰는거지?ㅋㅋ

가급적이면 안 쓰는게 좋지 않을까 생각이 된다.

Interface types (인터페이스 타입)

서두에 정리 하였지만, Object/function/calss의 형태를 정의할 때 사용하고 그 외에도
Index Interface, Hybrid Interface를 정의할 때 사용한다.


  1. Object Interface
    지금까지 다룬 내용이 모두 객체 인터페이스에 대한 내용이다. 넘어간다.

  1. Function Interface
    함수 인자의 타입과 반환값의 타입을 정의할 때 사용한다.


  1. Class Interface
    클래스 타입의 인터페이스를 구현할 때 사용한다. 이 때 implements 키워드를 사용한다.
    implements 키워드를 사용해서 interface에 종속시킨다는 개념으로 이해하면 될것 같다.


  1. Index Interface
    객체 타입의 key,value값의 타입을 구현할 때 사용한다.

선언 방법이 살짝 다름에 주의해야 한다.
class interfaceclass Cutehane implements Gomao를 사용하고
index interfacelet cutehane : Gomao를 사용한다.


  1. Hybrid Interface
    객체 인터페이스와 함수 인터페이스의 특징을 모두 갖는다.
    객체의 property/method, 함수의 parameter/return 값의 타입을 모두 강제한다.

다음 포스팅에 다룰 내용

Generic....? 이거 지금 하는 거 맞나?!?! ㅋㅋㅋ

profile
코딩꿈나무 고마오

0개의 댓글