2-4 타입 선언 및 인터페이스

Mark64-1·2022년 1월 27일
0

JS

목록 보기
8/16

여태 타입 알리아스 형태를 알아봤는데, 인터페이스로 들어갈것이다.
그런데 둘이 그렇게 동작상의 큰 차이는 없다.
다만 핵심은 일관성이다.
하나의 프로그램을 개발하는 코드를 짤때, 반드시 둘 중에 하나만 써서 일관됀 코드를 만들라는 것이다.

interface Store{
	currentPage: number;
    	feeds: NewsFeed[];
}

여태껏 type을 사용한 타입 알리아스와 차이는 무엇일까?
당연히 선언 텍스트가 바뀐것이 있고, =(부등호)를 사용하지 않게 됌에 큰 의미가 있다.

type NewsFeed = News & { 타입들 }

이것을 인터페이스로 바꿔보자.

interface NEwsFeed News{ 타입들 }

문법적으로 한눈에 봐도 이상하다는게 느껴진다.
당연히 빨간 밑줄을 띄우면서 에러를 뱉어내는데, 이런 결합법이 바로 타입 알리아스와 인터페이스의 차이이다.

interface NEwsFeed extends News{ 타입들 }

이렇게 해결하는것이다.
상속한다는 의미의 extends를 사용해서 받아오는것이다.
또한 이것도 안됀다!

interface NEwsFeed extends News{ 타입 | null }

그러면 interface를 왜 쓰느냐
이것이 바로 코드를 바라보는 기점의 차이이다.
타입 알리아스는 좀 더 수학적으로 이것을 추가하고 더하고 임시하고 가정하고 하는 반면에, interface는 좀 더 명확하게 글자로 a가 b를 extends 즉 상속한다라고 명확하게 표현하고 애매한 표현들을 걷어냄으로써 글로 표현하는 느낌을 준다.

타입 알리아스 = 수학적 : 인터페이스 = 문학적

이렇게 정리할 수 있겠다.
참고로 타입에 readonly를 사용할 수 있는데, 이 속성을 사용하면 상수값(변경할 수 없는 형태의 값) 이 돼면서 접근시 에러를 뱉는다.
즉 이런 요소요소들을 잘 사용해서 차근차근 잘 짜면 에러가 나지않고, 실행하지 않고도 코드를 더 이해하고 잘 짜는 길로 나아갈 수 있다!

profile
개발자임미다.

0개의 댓글