νμ μ€ν¬λ¦½νΈμ νμ μμ€ν μ μ§ν© μ΄λ‘ κ³Ό μ μ¬ν κ°λ μ λ°λ₯Έλ€. νμ μ νΉμ κ°λ€μ "μ§ν©"μΌλ‘ μ΄ν΄ν μ μμΌλ©°, μ΄λ₯Ό ν΅ν΄ λΆλΆμ§ν©(Subset), ν©μ§ν©(Union), κ΅μ§ν©(Intersection), μ¬μ§ν©(Exclusion) λ±μ κ°λ μ΄ μ§ν© μ°μ°κ³Ό λΉμ·νκ² μλνλ€.
type A = "π" | "π";
type B = "π" | "π" | "π«";
let a:A = βπβ
let b:B = βπ«β
let c:B = a β
Β β Aλ Bμ λΆλΆ μ§ν©μ΄λ―λ‘ Aνμ
λ³μλ Bνμ
λ³μμ ν λΉ κ°λ₯.
type Fruit = "π" | "π";
type Food = "π" | "π₯" | "π₯";
type FruitOrFood = Fruit | Food;
let item: FruitOrFood = βπ₯β;
type Person = { name: string };
type PhoneNumber = { phoneNumber: string };
type PersonInfo = Person & PhoneNumber;
let myInfo: PersonInfo = {
name: βμ‘λμ΄β,
phoneNumber: β010-1234-5678β
}
μ¬κΈ°μ μνμμ μλ―Ένλ κ΅μ§ν©μΌλ‘ μ κ·Όνλ©΄, Person κ³Ό PhoneNumber νμ μ κ΅μ§ν©μ΄ μκΈ°λλ¬Έμ PersonInfoλ ν©μ§ν©μ λ»νλ κ² μλκ°? λΌλ μλ¬Έμ΄ μκΈΈ μλ μλ€.
νμ§λ§ νμ μ€ν¬λ¦½νΈμμλ νμ μ μμ±μ λν μ§ν© μλ κ°λ€μ μ§ν©μΌλ‘ μΆλ‘ νκΈ° λλ¬Έμ μ§ν©λ‘ μ ****μλ―Έμλ λ°λλ‘ κ΅μ§ν©μ λ²μκ° λμ΄μ§κ³ , ν©μ§ν©μ μλ―Έλ μ’μμ§λ κ² μ²λΌ 보μΈλ€.
Unionμ κ°λ λν Fruitμ μ±μ§μ λ§μ‘±νκ±°λ Foodμ μ±μ§μ λ§μ‘±νλ κ°λ€μ λͺ¨μμ μλ―Ένλ κ²μ΄κΈ° λλ¬Έμ λ νμ μ€ νλλΌλ λ§μ‘±νλ κ°μ΄ μλ€λ©΄ Unionνμ μ λ§μ‘±νλ κ²μ΄λ€!
β νμ 체ν¬λ‘ μ°λ¦¬κ° μ μν νμ μ κ°μ ν λΉ ν μ μλ/μλλ₯Ό νλ¨ ν λ§μ‘±νλ©΄ ν΅κ³ΌμΈ μ .
κ²°κ³Όμ μΌλ‘, μ§ν©μ΄λ μ£Όμ΄μ§ μ±μ§μ λ§μ‘±μν€λ λμλ€μ λͺ¨μμ΄κΈ°μ νμ μΌλ‘ νννμλ©΄ μ μν νμ μ λ§λ κ°λ€μ λͺ¨μμΌλ‘ ν΄μν μ μλ€. μ§ν©λ‘ μ κ° νμ μ μ΄ν΄νλλ°μ λμμ λ μ μμ§λ§ κ°λ¨νκ² | μ°μ°μμ & μ°μ°μλ‘ μ κ·Όν΄ λ³Έλ€λ©΄ ~~μ΄κ±°λ νμ , ~~μ΄λ©΄μ νμ μΌλ‘ μ΄ν΄νλκ² μ¬μΈ κ² κ°λ€.