Gitsunmin

TIL

TIL
(=Today I Learned)

Algebraic data type

Algebraic이라는 단어는 한국어로 대수학이라고 번역할 수 있습니다. 즉, 대수학적 데이터 타입에 대해서 공부할 것을 간단하게 정리 해 보겠습니다.

먼저, “대수학”이란, 숫자, 기호, 연산자들을 사용하여 등식이나 부등식을 만들고 이를 해결하는데 초점을 맞추고 있습니다. 예시를 들어보자면,

    y = x + 1

이러한 문제가 주어졌을 때, x에 대해서 문제를 푸는 것 또한 대수학이라고 할 수 있습니다.

그렇다면, Algebric data type은 무엇일까요?

Algebraic data type이라고 해서 모든 대수학의 이론을 이용하여 data type을 설명하는 것은 아니며, 이라는 두 가지 기본적인 대수적 연산을 데이터 타입에 적용하는 것입니다. 여기서 이야기하는 은 다음과 같은 의미를 지닙니다.

  • 합 타입(Sum Type): 합 타입은 여러 가지 타입 중 하나를 선택할 수 있는 상황을 나타냅니다. 즉, 하나의 데이터 타입이 여러 타입 중 하나의 값을 가질 수 있게 합니다. Typescript에서 아래와 같은 예시를 만들 수 있습니다.
type Fruit = "Apple" | "Banana" | "Grape";

let myFruit: Fruit;
myFruit = "Apple";  // 올바른 할당
myFruit = "Banana"; // 올바른 할당
myFruit = "Grape";  // 올바른 할당
myFruit = "Pear";   // 컴파일 에러: Type '"Pear"' is not assignable to type 'Fruit'.
  • 곱 타입(Product Type): 곱 타입은 여러 가지 타입을 동시에 가질 수 있는 상황을 나타냅니다. 이는 프로그래밍에서 ‘AND’의 개념으로 이해할 수 있습니다. Typescript에서 아래와 같은 예시를 만들 수 있습니다.
type Person = {
  name: string;
  age: number;
};

let person: Person;
person = { name: "Alice", age: 25 }; // 올바른 할당
person = { name: "Bob" };            // 컴파일 에러: Property 'age' is missing in type '{ name: string; }' but required in type 'Person'.