νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ νƒ€μž… μ‹œμŠ€ν…œμ€ μ§‘ν•© 이둠과 μœ μ‚¬ν•œ κ°œλ…μ„ λ”°λ₯Έλ‹€. νƒ€μž…μ„ νŠΉμ • κ°’λ“€μ˜ "μ§‘ν•©"으둜 이해할 수 있으며, 이λ₯Ό 톡해 λΆ€λΆ„μ§‘ν•©(Subset), ν•©μ§‘ν•©(Union), ꡐ집합(Intersection), μ—¬μ§‘ν•©(Exclusion) λ“±μ˜ κ°œλ…μ΄ μ§‘ν•© μ—°μ‚°κ³Ό λΉ„μŠ·ν•˜κ²Œ μž‘λ™ν•œλ‹€.

λΆ€λΆ„μ§‘ν•©(Subset)

type A = "🍎" | "🍌";
type B = "🍎" | "🍌" | "🫐";

let a:A = β€˜πŸŽβ€™
let b:B = β€˜πŸ«β€™
let c:B = a βœ…Β β†’ AλŠ” B의 λΆ€λΆ„ μ§‘ν•©μ΄λ―€λ‘œ Aνƒ€μž… λ³€μˆ˜λŠ” Bνƒ€μž… λ³€μˆ˜μ— ν• λ‹Ή κ°€λŠ₯.

ν•©μ§‘ν•©(Union) - | μ—°μ‚°μž

type Fruit = "🍎" | "🍌";
type Food = "πŸ•" | "πŸ₯˜" | "πŸ₯Ÿ";

type FruitOrFood = Fruit | Food;

let item: FruitOrFood = β€˜πŸ₯˜β€™;

ꡐ집합(Intersection) - & μ—°μ‚°μž

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νƒ€μž…μ— λ§Œμ‘±ν•˜λŠ” 것이닀!

β†’ νƒ€μž…μ²΄ν¬λ‘œ μš°λ¦¬κ°€ μ •μ˜ν•œ νƒ€μž…μ— 값을 ν• λ‹Ή ν•  수 μžˆλƒ/없냐λ₯Ό νŒλ‹¨ ν›„ λ§Œμ‘±ν•˜λ©΄ 톡과인 μ…ˆ.

_- visual selection (1).png

결과적으둜, μ§‘ν•©μ΄λž€ μ£Όμ–΄μ§„ μ„±μ§ˆμ„ λ§Œμ‘±μ‹œν‚€λŠ” λŒ€μƒλ“€μ˜ λͺ¨μž„이기에 νƒ€μž…μœΌλ‘œ ν‘œν˜„ν•˜μžλ©΄ μ •μ˜ν•œ νƒ€μž…μ— λ§žλŠ” κ°’λ“€μ˜ λͺ¨μž„μœΌλ‘œ 해석할 수 μžˆλ‹€. 집합둠은 각 νƒ€μž…μ„ μ΄ν•΄ν•˜λŠ”λ°μ— 도움은 될 수 μžˆμ§€λ§Œ κ°„λ‹¨ν•˜κ²Œ | μ—°μ‚°μžμ™€ & μ—°μ‚°μžλ‘œ μ ‘κ·Όν•΄ λ³Έλ‹€λ©΄ ~~μ΄κ±°λ‚˜ νƒ€μž…, ~~μ΄λ©΄μ„œ νƒ€μž…μœΌλ‘œ μ΄ν•΄ν•˜λŠ”κ²Œ μ‰¬μšΈ 것 κ°™λ‹€.


μœ ν‹Έλ¦¬ν‹° νƒ€μž…(Utility Types)