언어/TypeScript

대수 타입

calendar2 2024. 8. 13. 18:01
대수 타입이란 여러 개의 타입을 합성해서 새롭게 만들어낸 타입을 의미한다.
합집합 타입과 교집합 타입이 존재한다.

합집합(Union) 타입

다음과 같이 두 가지 이상의 타입을 합쳐서 사용할 수 있다.

합집합 타입

 

특히 대수 타입은 객체 타입에서 유용하게 사용된다.

합집합2

 

코드를 보면 Dog 타입과 Person 타입을 합친 Union1 타입을 만들었고, Union1 타입의 객체들은 Dog 타입의 프로퍼티, Person 타입의 프로퍼티를 각각 또는 모두 가지는 것이 가능하다.

하지만, 두 타입이 공통적으로 가지고 있는 name이라는 프로퍼티만 정의하는 것은 불가능하다.

교집합(Intersection) 타입

각각의 타입에 공통적인 부분만 가능한 교집합 타입이 있다.

교집합 1

 

variable 변수에 number 타입과 string 타입의 교집합을 정의하였다. 그러자 variable 변수에는 숫자도 문자열도 할당이 불가능하게 되었다.

위 코드에서 보듯 기본적으로 원시 타입에서 교집합 타입을 적용할 경우 never 타입으로 정의될 가능성이 크다.

따라서, 교집합 타입은 어지간해서 객체에서만 사용된다.

교집합 2

 

앞서 정의한 Dog 타입과 Person 타입을 활용해서 Intersection1 타입을 정의한 후 객체를 생성해보았다.

여기서 중요한 것이 교집합 이라는 용어에 헷갈리면 안 된다.

교집합 타입에서의 교집합이란 두 타입에 공통적으로 존재하는 프로퍼티가 아니라, 두 타입이 가진 모든 프로퍼티를 포함하는 객체를 의미한다.

우리가 알고있는 일반적인 교집합 개념과 차이가 있으므로 사용에 유의하기 바란다.

참고자료

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

 

한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런

이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻‍♀️로 만들어드립니다., 프론

www.inflearn.com

 

'언어 > TypeScript' 카테고리의 다른 글

타입 단언  (0) 2024.08.15
타입 추론  (0) 2024.08.15
객체 타입의 호환성  (0) 2024.08.13
타입의 계층  (0) 2024.08.12
타입스크립트의 타입 (2)  (0) 2024.08.09