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 |