230130(μ)
π μ±μ₯μΌμ§ 3.1
μ±
ν볡ν μ΄κΈ°μ£Όμμ(μ¨μΈ λ€μ΄μ΄)
μ λ΄μ©μ μκ·Ήλ°μ μμνλ μλ°ν μ±μ₯κΈ°λ‘
μ΄μμλ κ½κ³Ό μ£½μ κ½μ μ΄λ»κ² ꡬλ³νλκ°?
μ±μ₯νκ³ μλ κ²μ΄ μ΄μ μλ κ²μ΄λ€.
μλͺ μ μ μΌν μ¦κ±°λ μ±μ₯μ΄λ€!
π³ ν€μλ (1.0)
μ΅λν κ°λ¨νκ² μ 리, μΆνμ 보면μ μ€μ€λ‘ μ€λͺ
π κ²½ν μμ£Όλ‘ (2.0)
λ¨μ μ 보λ₯Ό μ λ¬νκΈ°λ³΄λ€ λ¬΄μμ λ°°μ κ³ μ΄λ»κ² ν΄κ²°νλμ§ μ§§κ³ κ°λ¨νκ² μμ±
βοΈ μ ν΄μ§ ν νλ¦Ώμ λ§μΆ°μ (3.0)
ν€μλ, κ²½ν λͺ¨λ μ’λ€. λ€λ§ λ§€μΌ μμ±νκΈ°λ‘ λ§μ λ¨Ήμλ§νΌ ν΅μ¬λ§ κ°κ²°νκ² μ 리ν μ μκ² ν νλ¦Ώμ μμ± (3.1) 230102λΆν° μμλλ νμ΅μ κ΄ν λ΄μ© μΆκ°
π μ€λμ ν€μλ
μμν¨μ(Pure Function)
- λΆμ ν¨κ³Ό(side effect)κ° μλ ν¨μ.
- μ΄λ€ ν¨μμ λμΌν μΈμλ₯Ό μ£Όμμ λ,
νμ
κ°μ κ°μ λ°ννλ ν¨μ - μ¦, μ°λ¦¬κ° μνμμ λ°°μ°λ ν¨μμ κ°λ
λΆλ³μ±(Immutability)
- λ³νμ§ μλ μ±μ§
- μλ°μ€ν¬λ¦½νΈμμ μμ νμ μ κΈ°λ³Έμ μΌλ‘ λΆλ³μ±μ κ°λλ€.
- κ°μ²΄λ κΈ°λ³Έμ μΌλ‘ κ°λ³μ±μ κ°λλ€.
- λΆλ³νλ κ°μ²΄λ₯Ό λ§λ€κΈ° μν΄ Object.freeze(), rest parameterμ ν΅ν κ°μ²΄ λ°ν λ±μ λ°©λ²μ΄ μλ€.
μ°Έμ‘° ν¬λͺ μ±(Referential Transparency)
- ν¨μκ° ν¨μμ μΈλΆ μν₯μ λ°μ§ μλ κ²
- λμΌν μ λ ₯μ λν΄ λμΌν κ°μ λ°ννλ μ±μ§
ν¨μν νλ‘κ·Έλλ°
- λΆμ ν¨κ³Ό(side effect)λ₯Ό μμ κ³ μμ ν¨μλ₯Ό λ§λ€μ΄ λͺ¨λν μμ€μ λμ΄λ νλ‘κ·Έλλ° ν¨λ¬λ€μ
λΆμ ν¨κ³Ό(side effect)
- μΈλΆμ μνλ₯Ό λ³κ²½νλ κ² λλ ν¨μμ μ λ¬λ 맀κ°λ³μμ μνλ₯Ό μ§μ λ³κ²½νλ κ²
κ³ μ°¨ν¨μ
- ν¨μλ₯Ό μΈμλ‘ μ λ¬λ°λ ν¨μ
- ν¨μλ₯Ό λ°ννλ ν¨μ
- μΈμλ‘ λ°μ ν¨μλ₯Ό νμν μμ μ νΈμΆνκ±°λ ν΄λ‘μ λ₯Ό μ΄μ©νμ¬ λ°ννλ€.
- μλ°μ€ν¬λ¦½νΈμμ ν¨μλ
μΌκΈ κ°μ²΄
μ΄κΈ°μ κ°λ₯νλ€!
ν΄λ‘μ
μ΄λ€ ν¨μ(μΈλΆν¨μ) A
μμ μ μΈνλ³μ a
λ₯Ό μ°Έμ‘°νλλ΄λΆν¨μ B
λ₯Ό μΈλΆλ‘ μ λ¬ν κ²½μ°, Aμ μ€ν 컨ν μ€νΈκ° μ’ λ£λμμλλ³μ a
κ° μ¬λΌμ§μ§ μλ νμ
μ΅λͺ ν¨μ
- μ΅λͺ
ν¨μ μ체λ μλμ κ°μ ννλ‘, ν¨μμ μ΄λ¦μ΄ μ‘΄μ¬νμ§ μλλ€.
function () { console.log("Hello World! Hello Jayden!"); }
- 리ν°λ΄ λ°©μμΌλ‘ λ³μμ λ΄κ²¨μ μ¬μ©νλλ‘ λμ΄μλ€.
- μΌλ°μ μΌλ‘ ν¨μλ₯Ό μ¬μ¬μ©νμ§ μκ³ ν λ²λ§ μ°κ³ μΆμ λ, μ¬μ©νλ€.
- ν¨μ μ μΈλ¬Έκ³Ό λ¬λ¦¬ ν¨μ νΈμ΄μ€ν μ΄ μΌμ΄λμ§ μμ, λ©λͺ¨λ¦¬λ₯Ό μλ μ μλ€.
μ°Έκ³ μλ£
- ν¨μν νλ‘κ·Έλλ°κ³Ό μμν¨μ
- λΆμν¨κ³Όμ μ°Έμ‘°ν¬λͺ μ±
- λΆλ³μ±
- κ³ μ°¨ν¨μ
- ν΄λ‘μ :
μ½μ΄ μλ°μ€ν¬λ¦½νΈ
μ± - μ΅λͺ ν¨μ
π μμ½ λ° ν루 κ°λ¨ νκ³
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ νΉ λΉ μ Έμμλλ°(νμ¬ μ§ν μ€), μ€λλΆν°λ ν¨μν νλ‘κ·Έλλ°μ λν΄ κ³΅λΆνκ² λλ€. μμ§ν μ²μμ μ΄μ μ‘°κΈ κ°μ²΄ λ¨μλ‘ μΈμμ λ°λΌλ³΄κ³ μ½λλ₯Ό μΈ μ€ μκ² λμκΈ°μ, μ¬λ κ΄ν ν¨μν νλ‘κ·Έλλ°μ΄ λ§μ μλ€μλ€.(κ°μ²΄μ§ν₯ κ³΅λΆ λ°©ν΄νλ λλ) κ·Έλ°λ° μ΄κ² μ¬κ±Έβ¦ μμ§ λ μμμΌν κ² λ§μ§λ§, ν¨μν νλ‘κ·Έλλ°μ΄ κ°μ‘°νλ μμν¨μ, λΆμν¨κ³Ό μ€μ΄κΈ°, μ°Έμ‘° ν¬λͺ μ± λ±μ κ°λ μ κ΅μ₯ν μ μ νκ³ μ¬λ―Έμμλ€. μ΄λ¦΄ μ λΆν° μνμ μ’μνλ ν°λΌ, μΈλΆ λ³μλΌλ κ°λ μ‘°μ°¨ μλ μνμμμ ν¨μλ₯Ό μ μ©νλ κ² μ¬λ―Έμμλ€. λ¨μ§, κ·Έλ κ² μκ² λλμ΄μ§ ν¨μλ€μ ꡬμ±νκ³ μ‘°ν©νλ κ³Όμ μμ μ¬μ©λλ κ³ μ°¨ν¨μ, ν¨μ μ λ¬, ν΄λ‘μ λ±μ μμ§μ μͺΌμ€κΈ μ΄λ ΅λ€. λ€νν λ°°μ΄μμμ κ³ μ°¨ν¨μλ€μ μκ³ λ¦¬μ¦μ νλ©΄μ μμ£Ό μ¬μ©ν΄μ μλΉν νΈλ¦¬νκΈ΄ νλ€. μλμ μΌλ‘ if, switchλ¬Έκ³Ό κ°μ λΆκΈ°μ κ³Ό while, for λ±μ λ°λ³΅λ¬Έμ κ³ μ°¨ν¨μλ‘ λ°κΏμ μ μ©νλ μ§κ΄μ μ΄κ³ κ·Έ μ€κ° μ€κ° κ³Όμ μ΄ νλμ μ½κ² λ€μ΄μ¨λ€. κ°μ²΄μ§ν₯ λμ²λΌ λκ° μμΌκ° νμ₯λλ κΈ°λΆμ΄ λ€λλ§λνκ³ μλ€!!! μΌλ₯Έ ν¨μνμΌλ‘λ μΈμμ λ°λΌλ³Ό μ μκ² λλ©΄ μ’κ² λ€ :)
μ€λμ μν μ
- κ°μ²΄μ§ν₯μΌλ‘ ꡬνλμ΄μλ μ½λλ₯Ό μ λΆ ν¨μν νλ‘κ·Έλλ°μΌλ‘ ꡬν
- λ λμκ° ν¨μλ€μ λͺ¨λν
- νμ μ€ν¬λ¦½νΈμ λ μ΅μν΄μ§κ³ μλ μ
μ€λμ μμ¬μ΄ μ
- typescript compile μ tsconfigμ target μ΅μ κ³Ό cliμμ μ£Όλ βtargetμ μ΅μ μ°¨μ΄λ₯Ό μ νν λͺ¨λ₯΄κ² λ€.(μ΄μ¬ν μ°Ύμλ΄λ λκ° μμμν λ΅μ΄ μλ€ γ )