본문 바로가기
강의 실습/한 입 크기로 잘라먹는 타입스크립트(TypeScript)

대수 타입

by Jint 2024. 8. 9.

한 입 크기로 잘라먹는 타입스크립트 - 대수 타입

1. 대수 타입
여러 개의 타입을 합성해서 새롭게 만들어낸 타입.
합집합 타입(Union 타입)과 교집합 타입이 존재.

1) 합집합 타입 (Union 타입)
- src/chapter4.ts

// 대수 타입
// 합집합 타입 (Union 타입)
// let a: string | number; // string number boolean union 타입
let a: string | number | boolean | undefined | null | {}; // 추가할 수 있는 타입 개수는 무한대이다.
a = 1;
a = 'hello';
a = true;

// 배열의 타입 적용
let arr: (number | string | boolean)[] = [1, 'hello', true];

// 객체 타입들을 이용한 유니온 타입
type Dog = {
    name: string;
    color: string;
};

type Person = {
    name: string;
    language: string;
};

// 타입 별칭을 이용하여 유니온 타입 만들기
type Union1 = Dog | Person;
// 합집합 타입에 들어감
let union1: Union1 = { // 가능 : Dog 집합
    name: ''
  , color: ''
};
let union2: Union1 = { // 가능 : Person 집합
    name: ''
  , language: ''
};
let union3: Union1 = { // 가능 : Dog 와 Person 의 교집합
    name: ''
  , color: ''
  , language: ''
};
// 합집합 타입에 들어가지 않음
/*
let union4: Union1 = { // 불가능 : 합집합 바깥에 존재
    name: ''
};
*/


2) 교집합 타입 (Intersection 타입)
기본 타입끼리 교집합 타입을 만들면 왠만하면 거의 never 타입이다. 왜냐하면 기본 타입들 중에서는 서로 공유하거나 겹치는 값들이 없기 때문.
따라서, 보통 교집합 타입은 객체 타입으로 많이 사용한다.

- src/chapter4.ts

...
// 교집합 타입 (Intersection 타입)
// 기본 타입의 교집합
let variable: number & string; // never 타입 - 공집합

// 객체 타입의 교집합
type Dog2 = {
  name: string;
  color: string;
};

type Person2 = {
  name: string;
  language: string;
};

// 객체 타입들을 이용한 인터섹션 타입
type Intersection = Dog & Person;

// Dog 타입과 Person 타입의 교집합 : Dog 타입의 프로퍼티와 Person 타입의 프로퍼티를 모두 가지고 있어야 함.
let intersection1: Intersection = {
    name: ''
  , color: ''
  , language: ''
};



참고링크 : https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8#

 

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

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

www.inflearn.com

댓글