TypeScriptμ κ½πΉμ΄λΌκ³ νλ μΉκ΅¬λ€μ λν΄μ μμ보μ.
π1. Type Aliases
- Type aliasesλ νμ
μ μλ‘μ΄ μ΄λ¦μ λ§λ€ μ μλ€.
: μλ‘μ΄ νμ
μ μ¬μ©μκ° μ μ ν μ μλ€λ κ².
: μλ‘μ΄ μ νμ μμ±νλ κ²μ΄ μλ ν΄λΉνλ μ νμ μ°Έμ‘°νλ μλ‘μ΄ μ΄λ¦(νμ
)μ λ§λ λ€.
- Primitive Typeκ³Ό Objective Type λͺ¨λ μ μν μ μλ€.
:μμ νμ
μ κ²½μ°μλ aliasingν μ μμ§λ§ μ μ©νμ§λ μλ€.

ππ2. Literal Types
- String, Numeric, Boolean μΈ κ°μ§ μ νμ Literal Typesκ° μλ€.
- Literal Typesλ₯Ό μ΄μ©νμ¬ string, number, boolean νμ
μ μμ΄μΌνλ μ νν(μ ν΄μ§) κ°μ ν λΉν μ μλ€.
- μν ( Literal Narrowing )
: μ΄λ€ λ³μμ νμ
μ΄ 'string'λΌλ©΄, 무νν stringνμ
μ λ¬Έμμ΄μ΄ ν λΉλ μ μλ€. μλ§μ μΌμ΄μ€κ° μ‘΄μ¬ν μ μκ²λλλ°
무νν μΌμ΄μ€λ₯Ό μ’ λ μκ³ μ νν μΌμ΄μ€λ‘ λ§λ€ μ μλ€. => Union Typesμ κ²°ν©νμ¬!!
2-1. String Literal Types
: λ¬Έμμ΄μ νμ
μΌλ‘ μ§μ ν μ μλ€.
: μ¦, λ¬Έμμ΄λ‘ μ§μ λ νμ
μ κ°μ§λ λ³μλΌλ©΄ κ·Έ λ³μλ μ£Όμ΄μ§ νμ
μ ν λΉλ λ¬Έμμ΄λ§ ν λΉλ μ μλ€.

2-2. Numeric Literal Types
: String Literal Typesκ³Ό λΉμ·νκ² λμνλ€.

2-3. Boolean Literal Types

π3. Union Types
β
TIP!β¨ ORμ κ°λ
μ μκ°νλ©΄ λλ€.
- unionμ νλ λλ λ κ°μ§ νμ
μ κ²°ν©νλ κΈ°λ₯μΌλ‘μ μ¬λ¬ νμ
μ€ νλ μΌ μ μλ κ°μ νννλ λ°©λ²
- λκ° μ΄μμ λ°μ΄ν° νμ
μ νμ΄ν κΈ°νΈ (|)λ₯Ό μ¬μ©νμ¬ μ‘°ν©λμ΄ unionνμμ λνλΈλ€.
- μ£Όλ‘ Literal Typesμ ν¨κ» μ¬μ©λλ€.
- νΉμ νμ
μΌλ‘ νμ
μ λ²μλ₯Ό μ’νλ κ²μ νμ©( Type guard )
νμ¬ μ¬μ©λλ μΌμ΄μ€(νμ
)λ₯Ό μ’ν μ μλ Literal typesλ₯Ό μ¬μ©ν νλμ fieldλ₯Ό 곡ν΅μ μΌλ‘ κ°μ§κ³ μλ Unionsλ₯Ό ν΅ν΄ ꡬνν μ μλ κΈ°μ μ΄λ€.
μ΄λ 곡ν΅μ μΌλ‘ κ°μ§κ³ μλ νλμ fieldλ λμΌν ν€μ λ€λ₯Έ κ°μ κ°μ§κ³ μμ΄μΌνλ€.
β
POINTβ¨ μ΄λ€ μΌμ΄μ€λ , 곡ν΅λ ν€λ₯Ό κ°μ§λ νλμ filedλ₯Ό λ§λ€κ³ κ·Έ fieldμλ κ° Unionλ§λ€ λ€λ₯Έ κ°μ κ°μ§κ² ν΄μ Union Typeμ ꡬλ³νκΈ° μ½κ² λ§λ λ€.
- μ§κ΄μ μΌλ‘ μ½λλ₯Ό μμ±ν μ μλ€.
- κ°λ
μ± μλ μ½λλ₯Ό μμ±ν μ μλ€
( μλ¬ΈμΌλ‘ 곡μλ¬Έμλ₯Ό 보λ κ²μ μ°μ΅νκ³ μμ΄μ μμν΄μ μ λ κ²μ΄ μ΄λ ΅μ΅λλ€. πγ
γ
)
μλμ μλ₯Ό 보면 λ μ½κ² μ΄ν΄ν μ μμ΅λλ€.

μμμ λ§ν κ°κ°μ interfaceμλ "isValid" λΌλ 곡ν΅λ νλμ filedκ° μκ³ , κ·Έ fieldλ Boolean Literal Typesλ‘ λ€λ₯Έ κ°μ΄ μμ±λμ΄ μλ κ²μ λ³Ό μ μμ΅λλ€.
μ¬κΈ°μ "isValid"λ Union Type( type ValidationResult )μ μ¬μ©λλ λ νμ
μ νλμ νλ( "isValid" )λ₯Ό ν΅ν΄μ μ½κ² ꡬλΆνλ μν μ ν©λλ€.
*Discriminate: μ°¨λ³ννλ€, ꡬλ³νλ€
4. Intersection
β
TIP!β¨ & μ κ°λ
μ μκ°νλ©΄ λλ€.
- μ¬λ¬ νμ
μ μ°νΌμλ(&) κΈ°νΈλ‘ μ΄μ΄μ μΈν°μΉμ
νμ
μ λνλΌ μ μλ€.
- A & B νμ
μ κ°μ A νμ
μλ, B νμ
μλ ν λΉ κ°λ₯ν΄μΌ νλ€. λ§μ½ Aμ B λͺ¨λ κ°μ²΄ νμ
μ΄λΌλ©΄ A & B νμ
μ κ°μ²΄λ Aμ B νμ
κ°κ°μ μ μλ μμ± λͺ¨λλ₯Ό κ°μ ΈμΌ νλ€.

type Employeeλ ProgrammerInfo μ Privacyμ μ μλ λͺ¨λ λ°μ΄ν°λ₯Ό μ λ¬ν΄μΌ νλ€.
μ°Έκ³ μλ£ | TypeScript Handbook Reference
μ°Έκ³ μλ£ | TypeScript Handbook | Literal Types
μ°Έκ³ μλ£ | TypeScript Handbook | Unions and Intersection Types