티스토리 뷰

안녕하세요 동기 여러분! 오늘은 유니온 타입의 다섯 번째 시간으로 공통의 키와 값에 대해 알아봅시다!

 

Common Key Value Pairs

아래의 코드를 살펴봅시다.

type Diablo2 = {
    releaseDate: number,
    developer: string,
}

type Starcraft = {
    releaseDate: number
}

const gameInfo: Diablo2 | Starcraft = { releaseDate: 23904 }; // 에러 없음	
const gameInfo2: Diablo2 | Starcraft = { developer: '블리자드' }; // 에러 있음
  • 타입 Diablo2에는 releaseDate가 타입 number로 developer는 타입 string로 선언되어 있습니다.
  • 타입 Starcraft에는 releaseDate만 타입 number로 선언되어 있습니다.
  • 이럴 경우 gameInfo라는 변수를 만들어 타입을 Diablo2 | Starcraft인 유니온 타입으로 선언하고 값을 { releaseDate: 23904 }로 선언하면 에러가 없지만
  • gameInfo2라는 변수를 만들어 타입 Diablo2 | Starcraft인 유니온 타입으로 선언을 하고 값을 { developer: '블리자드' }로 선언하면 에러가 납니다.

그 이유는 타입스크립트는 타입 멤버들을 유니온 타입으로 만들었을 때 공통(Common)의 메서드나 프로퍼티들만 사용할 수 있게 해 줍니다. → 타입 Diablo2와 Starcraft의 교집합에 있는 메서드나 프로퍼티만 적용이 된다는 소리

 

 

에러가 나는 const gameInfo2: Diablo2 | Starcraft = { developer: '블리자드' }; 코드를 컴파일링 하면 아래와 같은 에러가 나타납니다.

  • 타입 '{ developer: string; }'은 타입 'Diablo2 | Starcraft'에 선언할 수 없다.
  • 프로퍼티 'releaseDate'는 타입 '{ developer: string; }'에 없지만 타입 'Diablo2'에는 필요하다. → 타입 Diablo2에만 developer: string이 있기 때문

 


 

오늘의 느낌

아 너무 어렵다 이 오늘 배운 내용은 내용이 많이 미흡합니다. 다음에 공부 더 해서 수정본을 업로드하겠습니다 ㅠㅠ 

'TypeScript' 카테고리의 다른 글

[TypeScript] Type guards  (0) 2022.01.21
[TypeScript] Unions with Literal Types  (0) 2022.01.21
[TypeScript] Unions and Arrays  (0) 2022.01.20
[TypeScript] Inferred Union Return Types  (0) 2022.01.20
[TypeScript] Type Narrowing  (0) 2022.01.19
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함