여태 타입 알리아스 형태를 알아봤는데, 인터페이스로 들어갈것이다.
그런데 둘이 그렇게 동작상의 큰 차이는 없다.
다만 핵심은 일관성이다.
하나의 프로그램을 개발하는 코드를 짤때, 반드시 둘 중에 하나만 써서 일관됀 코드를 만들라는 것이다.
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를 사용할 수 있는데, 이 속성을 사용하면 상수값(변경할 수 없는 형태의 값) 이 돼면서 접근시 에러를 뱉는다.
즉 이런 요소요소들을 잘 사용해서 차근차근 잘 짜면 에러가 나지않고, 실행하지 않고도 코드를 더 이해하고 잘 짜는 길로 나아갈 수 있다!