κ΄λ ¨ μμ : (1μΉμ ) JSμ λ¨μ κ³Ό TSμ μ₯μ
μ μ νμ μμ€ν κ³Ό λμ νμ μμ€ν μ λ¨μ λ€μ 보μνκ³ μ₯μ λ€μ κ·Έλλ‘ κ°μ Έμ¨ TypeScriptμ νμ μμ€ν μ λλΌκ³ λΆλ₯ΌκΉμ? λμ€μ μμΉνκΈ° νΈνκ² μλ¬ΈμΌλ‘λ μ μ΄λ³΄μμ!
βοΈ μ μ§μ νμ μμ€ν (Gradual Type System)
κ΄λ ¨ μμ : (1μΉμ ) JSμ λ¨μ κ³Ό TSμ μ₯μ
TypeScriptμ νμ μμ€ν μ΄ κ°λ νΉμ§μλ μ΄λ€ μ μ΄ μμκΉμ?
λ°λ‘ λ± λ μ€λ₯΄λ νκ°μ§ νΉμ§λ§ μ μ΄μ£ΌμΈμ!
κ°μ λ΄μ©μ μμλλΌλ λ€λ₯Έ λΈλ‘κ·Έ, μν°ν΄μμ μ°Ύμ μ 보λ₯Ό μ μ΄μ£Όμ λ μ’μμ!
βοΈ μ»΄νμΌ μ μ μ€λ₯λ₯Ό λ°©μ§νλ€.
π λ€λ₯Έ λ΅λ³
μλ°μ€ν¬λ¦½νΈμ κ²½μ° μΈν°νλ¦¬ν° μΈμ΄λ‘ λ°νμ λ¨κ³μμ μ€λ₯κ° λ°κ²¬μ΄ λλλ°μ λ°ν΄ νμ
μ€ν¬λ¦½νΈ(μ»΄νμΌ μΈμ΄)λ μ»΄νμΌ λ¨κ³μμ νμ
μ κ²μ¬νκΈ° λλ¬Έμ μ¬μ μ μ€λ₯ λ°κ²¬μ΄ κ°λ₯νλ€
κ΄λ ¨ μμ : (1μΉμ ) νμ μ€ν¬λ¦½νΈμ λμ μ리
TypeScriptλ₯Ό μ»΄νμΌ νλ©΄ κ·Έ κ²°κ³Όλ‘ λ¬΄μμ΄ μμ±λλμ?
(ννΈ! TypeScriptλ λ€λ₯Έ μΈμ΄λ€κ³Όλ λ¬λ¦¬ μ»΄νμΌ κ²°κ³Ό ByteCodeκ° μμ±λμ§ μμμ)
βοΈ jsνμΌ
π λ€λ₯Έ λ΅λ³
ts -> AST(μΆμ λ¬Έλ² νΈλ¦¬) -> νμ
κ²μ¬(Type Checking) -> js
κ΄λ ¨ μμ : (1μΉμ ) νμ μ€ν¬λ¦½νΈ μ»΄νμΌλ¬ μ΅μ μ€μ νκΈ°
νμ μ€ν¬λ¦½νΈλ μ¬μ©μ(νλ‘κ·Έλλ¨Έ)κ° μ§μ μ»΄νμΌλ¬ μ΅μ μ μ€μ ν μ μλ μμ λ‘μμ μ 곡ν΄μ
λ°λΌμ μ°λ¦¬κ° tsconfig.json νμΌμ λ΄μ©μ μμ νλ©΄μ μ΄λ° μ λ° μ΅μ μ μ€μ ν μ μλλ°μ
μ΄ νμΌμμ νμ κ²μ¬λ₯Ό λ§€μ° μ격νκ² νλ €λ©΄ μ΄λ€ μ΅μ μ μ΄λ€ κ°μΌλ‘ μ€μ ν΄μΌ ν κΉμ?
ex) μ΅μ μ΄λ¦ : μ€μ κ°
βοΈ "strict": true
μλ μ½λμ²λΌ number νμ μ λ³μμ null κ°μ ν λΉνλ €κ³ ν΄μ
let numA: number = null; // β μ€λ₯ λ°μ!
μ΄ μ½λλ μ격ν νμ κ²μ¬κ° νμ±ν λμ΄ μμ λμλ μ€λ₯λ‘ νλ¨λλλ°μ
λ§μ½ μ μ½λλ₯Ό μ€λ₯κ° μλ κ²μΌλ‘ νλ¨νκ² νλ €λ©΄ μ΄λ€ μ΅μ μ μ΄λ€ κ°μΌλ‘ μ€μ ν΄μΌ ν κΉμ?
ex) μ΅μ μ΄λ¦ : μ€μ κ°
βοΈ "strictNullChecks": false
λ¬Έμ λ₯Ό λ€ νκ³ λ€λ₯Έ μκ°μλ€μ λ΅λ³μ 보μλλ°
ν¨μ¬ λν
μΌνκ² μ μ΄λΈ κ²μ λ³΄κ³ 'μ΄λ κ² κ³΅λΆν΄μΌνλꡬλ' μΆμλ€π²