5주차 TypeScript Study 에서는 Union
, Intersection
과 enum
에 대해 배웠습니다
스터디 내용을 복습하면서 각 타입이 언제 사용되는지 더 알아보았습니다
합집합 A ∪ B
→ 즉, A타입, B 타입 둘 중 하나 !
|
로 구분하고 Javascript 의 OR
연산자와 비슷한 역할을 한다!
let one: string | number | boolean;
one = 1;
one = '1';
one = true;
type alias
와 &
를 사용해야 함교집합 A ∩ B
→ 즉, A타입이면서 B타입 !
&
로 구분하고 Javascript 의 OR
연산자와 비슷한 역할을 한다!
type Student = {
study: () => void;
};
type Developer = {
develop: () => void;
}
const subin: Human & Developer = {
study() {
console.log("공부 중");
} ,
develop() {
console.log("개발 중");
}
}
새로운 필드를 추가
하고 싶을 때 사용열거형, 특정 값들의 집합
을 이름이 있는 상수
들로 구성하는 방법
enum LanguageCode {
korean = 'ko',
english = 'en',
japanese = 'ja',
chinese = 'zh',
spanish = 'es',
}
추상화
를 하고 싶을 때enum LanguageCode {
korean = 'ko',
english = 'en',
japanese = 'ja',
chinese = 'zh',
spanish = 'es',
}
const code: LanguageCode = LanguageCode.korean
확장 불가능성
enum
과 다른 enum
을 합쳐 또 다른 enum
을 만들기 위해서는 union type
을 사용해야한다불완전한 타입 안정성
코드 사이즈 증가
enum
은 결국 JS 객체로 컴파일
되기 때문에 많은 enum
선언은 전체적인 코드 사이즈에 영향을 준다enum LanguageCode {
korean = 'ko',
english = 'en',
japanese = 'ja',
chinese = 'zh',
spanish = 'es',
}
type LanguageCode = 'ko' | 'en' | 'ja' | 'zh' | 'es'
const LanguageCode {
korean : 'ko',
english : 'en',
japanese : 'ja',
chinese : 'zh',
spanish : 'es',
} as const
type LanguageCodeType = typeof LanguageCode[keyof typeof LanguageCode]
enum의 문제점에서 끝나지 않고 대체해서 사용하는 방법을 코드 예시로 설명해두어서 더 잘 이해가 갔어요!!
문자형 enum에 대해 찾아보다가, 우아한 기술블로그에서 작성한 타스 코딩 컨벤션 정하기 관련 게시글에서 enum
컨벤션 정하기와 관련된 아티클을 보아서 공유합니당 ! enum과 const enum과 const assertion 중에서 enum
을 선택했더라구요!
아티클 공유하고 갑니다 !
https://techblog.woowahan.com/9804/#toc-1
즐겁게 읽었습니다. 유용한 정보 감사합니다.