인터페이스
객체 타입에 이름을 붙이는 또 하나의 방법 존재
- 인터페이스 선언을 사용
- 타입 별칭과 마찬가지로 파스칼케이스가 컨벤션
인터페이스 - 배열과 함수에서의 타이핑
인터페이스는 객체에 사용 가능하므로 배열과 함수에서도 사용가능하다
[key:number] : string?
- 인덱스 시그니처
- 해당 객체에 length를 제외한 속성의 키가 전부
number
라는 의미
인터페이스 병합
타입 별칭과는 다른 인터페이스의 차별점
- 인터페이스끼리는 서로 합칠 수 있다
- 같은이름으로 인터페이스를 선언하면 하나의 인터페이스로 합쳐진다
- 이를 선언 병합이라고 정의
- 이런 기능을 만든 이유는?
- 나중에 다른 사람이 인터페이스를 확장할 수 있도록 하기 위함
인터페이스 간 속성이 겹치는데 타입이 다를 경우는 에러가 발생함!
네임 스페이스
인터페이스 병합엔 큰 단점이 존재
- 남이 만든 인터페이스와 의도치않게 병합될 수 있음(라이브러리 사용시..)
- 네임스페이스 내부타입 참조하려면 네임스페이스내에서 인터페이스를
export
해야된다
- 참조시 점표기법으로 접근 (대괄호 표기법으론 접근 ❌)