Effective Typescript 7장, 8장을 읽고 선정한 인터뷰 질문과 스터디 내용입니다.
내용요약
인터뷰질문
Q. 타입스크립트에서의
enum이란? 사용해야 하는지?
A. 여러 관련된 상수 값들을 한 곳에 모아서 정리할 수 있도록 하는 타입.
숫자 enum은 재할당 가능, 문자열 enum은 구조적 타이핑이 아닌 명목적 타이핑을 사용한다는 단점이 있고, const enum은 런타임에 완전히 제거된다는 단점이 있다.
enum대신 리터럴 타입의 유니온을 사용하는 것이 좋다.
Q. JS/TS에서 정보를 감추기 위해 효과적인 방법?
A. 클로저, 비공개 필드(#접두사)
TS의 private접근 제어자는 런타임에는 아무런 효과가 없다.
회고
- 지금까지 내 타입스크립트는 진짜 얼렁뚱땅이었고, 기능을 100% 활용하지 못하고 있었다는 것을 알게 되었다.
✅ 제네릭과 관련된 부분!! 딥다이브 해보자.
✅ extends 키워드 활용하기. 이전에는 귀찮아서 그냥 API 문서 다 적었다. ㅋㅋ.. 절대 D R Y 해
✅ 아무 생각 없이 string 남발 금지. 인덱스 시그니처 활용하기.
✅ 의존성에 대한 이해 없이 구글링한 설치코드를 복붙해왔던 날들이 부끄러워진다... 타입 관련 의존성은 꼭 dev에 넣자.
✅ TS Doc을 활용해보자.
✅ 그냥 모른다고 any 때리지 말고 any를 구체화시키자. 혹은 unknown을 활용하자.
✅ declare 키워드의 활용. "사용할 때는 너그럽게, 생성할 때는 엄격하게"
✅ 타입 커버리지를 추적하자. 털릴 것 같다는 생각이 든다... 그래도 리팩터링 이전과 이후를 비교해보면 재밌지 않을까?
- 또 아무 생각 없이 "그냥 그렇게 배웠으니까" 하면서 습관적으로
무지성적었던 패턴들을 "왜" 그렇게 써야 하는지 알 수 있었다.
✅ 인터페이스의 유니온 쓰는 이유. 이게 유니온인줄도 몰랐지... 각 속성마다 일관된 조합을 사용할 수 있도록 해준다.
✅ 리터럴 타입의 유니온 쓰는 이유. 문자열 enum은 구조적 타이핑이 아닌 명목적 타이핑 + 숫자 enum은 지맘대로 재할당 가능 + Tree-shacking(안쓰는거 삭제) 불가
✅ String 말고 string, Number 말고 number를 쓰는 이유. 객체 래퍼 타입 vs 기본형 !! 기본형은 객체 래퍼 타입에 할당 가능하지만 역은 불가능하기 때문에 기본형을 쓴다.
✅ 함수 선언문보다 함수 표현식을 쓰는 이유. 사실 이거 협업하다 보면 섞이는 경우도 많았다. 함수의 매개변수, 반환값 전체를 함수 타입으로 선언할 수 있기 때문에 표현식이 더 좋다! 팀원들 컨벤션 맞출 때 설득할 수 있겠다.
- 각 아이템별로 이전 프로젝트 코드들을 리팩토링하면서 복습하면 좋을 것 같다.
'TIL > TypeScript' 카테고리의 다른 글
| [240131] 제네릭, 유틸리티 타입(제네릭 타입) (0) | 2024.01.31 |
|---|---|
| [240118] 이펙티브 타입스크립트 3주차 (0) | 2024.01.18 |
| [240111] 이펙티브 타입스크립트 2주차 (1) | 2024.01.11 |
| [240104] 이펙티브 타입스크립트 1주차 (0) | 2024.01.05 |