LearningTS Chapter 1 - YDP-SPLOUNGE-CLUB/typescript-study GitHub Wiki
1.2 λ°λλΌ μλ°μ€ν¬λ¦½νΈμ ν¨μ
μ€μν μΈμ΄ νμ₯μ΄λ νλ μμν¬ μμ΄μλ°μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νλ κ²μ λ°λλΌ λΌκ³ λΆλ₯Έλ€. μμν μλ°μ€ν΄λΉνΈλ₯Ό μλ―Ένλ€. νμ μ€ν¬λ¦½νΈκ° μλ°μ€ν¬λ¦½νΈμ μλ μ£Όμ ν¨μ μ 극볡νκΈ° μν΄ μ μ ν κΈ°λ₯μ μΆκ°ν μ΄μ λ₯Ό μ΄ μ± μμ μ€λͺ νλ€.
μ΄λ¬ν λͺ¨λ μ½μ μ νλ‘μ νΈ κ·λͺ¨κ° 컀μ§κ³ μ₯κΈ°νλ μλ‘ λμ± λλ¬λλ€.
1.2.1 κ° λΉμΌ μμ
JSλ₯Ό μ¬μ©νλ κ°λ°μλ€μ ν° λΆλ§μ ν΅μ¬ κΈ°λ₯μ μλ€. JSλ μ¬μ€μ μ½λλ₯Ό ꡬμ±νλ λ°©λ²μ μ νμ΄ μλ€. μ΄λ¬ν μμ λλΆμ νλ‘μ νΈλ₯Ό μλ°μ€ν¬λ¦½νΈλ‘ μμνλ©΄ λ§€μ° μ¬λ―Έμλ€.
κ·Έλ¬λ νμΌμ΄ λμ΄λ μλ‘ κ·Έ μμ κ° μΌλ§λ νΌμλ μ μλμ§ λͺ νν΄μ§λ€. κ°μμ νμΈν μ ν리μΌμ΄μ μ½λμ μΌλΆλΆμ΄λ€.
function paintPating(painter, painting) {
return painter
.prepare()
.paint(painting, painter.ownMaterials)
.finish();
}
μλ¬΄λ° λ§₯λ½λ μμ΄ μ½λλ₯Ό μ½κ² λλ©΄ paintPainting ν¨μλ₯Ό νΈμΆνλ λ°©λ²μ λν΄ λ§μ°ν μκ°λ§ νκ² λ κ²μ΄λ€.
νΉμ μ½λλ² μ΄μ€μ κ΄λ ¨λ μμ μ ν μ μ΄ μλ€λ©΄ μ΄λ€ ν¨μλ‘ λ°νλμ΄μΌ νλμ§ κΈ°μ΅νκ³ μμμ§λ λͺ¨λ₯Έλ€.
κ·Έλ¬λ μμ κ°μ μ΄ μ ννλλΌλ λμ€μ μ½λλ₯Ό λ³κ²½νλ©΄ μ΄ κ°μ μ 무ν¨κ° λ μ§λ λͺ¨λ₯Έλ€.
λ¬Έμμ΄μ΄μλ paintingμ΄ λ€λ₯Έ λ°μ΄ν° νμ μΌλ‘ λ³κ²½λκ±°λ νλ μ΄μμ painter λ©μλ μ΄λ¦μ΄ λ³κ²½λμμ μλ μλ€.
λ€λ₯Έ μΈμ΄λ μ»΄νμΌλ¬κ° μΆ©λν μ μλ€κ³ νλ¨νλ©΄ μ½λ μ€νμ κ±°λΆν μ μλ€.
μλ°μ€ν¬λ¦½νΈλ μΆ©λ κ°λ₯μ±μ λ¨Όμ νμΈνμ§ μκ³ μ½λλ₯Ό μ€ννλ λμ νμ μΈμ΄λ κ·Έλ μ§ μλ€.
μ½λμ μμ λ μλ°μ€ν¬λ¦½νΈλ₯Ό μ¬λ―Έμκ² λ§λ€κΈ°λ νμ§λ§ μ½λλ₯Ό μμ νκ² μ€ννλ €κ³ ν λλ μλΉν κ³ ν΅μ μ겨μ€λ€.
1.2.2 λΆμ‘±ν λ¬Έμ
μλ°μ€ν¬λ¦½νΈ μΈμ΄ μ¬μμλ ν¨μμ λ§€κ°λ³μ, ν¨μ λ°ν, λ³μ λλ λ€λ₯Έ κ΅¬μ± μμμ μλ―Έλ₯Ό μ€λͺ νλ νμ€νλ λ΄μ©μ΄ μλ€.
κ°λ°μκ° λΈλ‘ μ£ΌμμΌλ‘ ν¨μμ λ³μλ₯Ό μ€λͺ νλ JSDoc νμ€μ μ±ννλ€.
/**
* @param {Painting} painter
* @param {string} painting
*/
JSDoc μλ λ€μκ³Ό κ°μ μ£Όμ λ¬Έμ λ‘ μΈν΄ κ·λͺ¨κ° μλ μ½λλ² μ΄μ€μμ μ¬μ©νκΈ° λΆνΈνλ€.
- JSDoc μ€λͺ μ΄ μ½λκ° μλͺ»λλ κ²μ λ§μ μ μλ€.
- μ€λͺ μ΄ μ΄μ μλ μ ννλλΌλ μ½λ 리ν©ν°λ§ μ€μ μκΈ΄ λ³κ²½ μ¬νκ³Ό κ΄λ ¨λ νμ¬ μ ν¨νμ§ μμ JSDoc μ£Όμμ λͺ¨λ μ°ΎκΈ° μ΄λ ΅λ€.
- 볡μ‘ν κ°μ²΄λ₯Ό μ€λͺ ν λλ λ€λ£¨κΈ° μ΄λ ΅κ³ μ₯ν©ν΄μ λ€μμ μ£Όμμ΄ νμνλ€.
μμ κ°μ νμΌμμ JSDoc μ£Όμμ μ μ§ κ΄λ¦¬λ λ§μ μκ°μ΄ κ±Έλ¦¬μ§ μκ² μ§λ§ μλ°± λλ μμ² κ°μ νμΌμ κΎΈμ€ν μ λ°μ΄νΈ νλ €λ©΄ μ½μ§ μλ€.
1.2.3 λΆμ‘±ν κ°λ°μ λꡬ
JS νμ μ μλ²½νλ λ΄μ₯λ λ°©λ²μ μ¬μ©νμ§ μκ³ μ½λκ° JSDoc μ£Όμμμ μ½κ² λΆλ¦¬λκΈ° λλ¬Έμ μ½λλ² μ΄μ€μ λν λκ·λͺ¨ λ³κ²½μ μλννκ±°λ ν΅μ°°λ ₯μμ»κΈ°κ° μ΄λ ΅λ€.
1.3 νμ μ€ν¬λ¦½νΈ
νμ μ€ν¬λ¦½νΈλ 2010λ λ μ΄μ λ§μ΄ν¬λ‘μννΈ λ΄λΆμμ λ§λ€μ΄μ§ ν 2012λ μ μΆμ λ° μ€ν μμ€ν λμλ€.
νμ μ€ν¬λ¦½νΈλ λ€ κ°μ§λ‘ μ€λͺ λλ€.
- νλ‘κ·Έλλ° μΈμ΄: μλ°μ€ν¬λ¦½νΈμ λͺ¨λ ꡬ문과 νμ μ μ μνκ³ μ¬μ©νκΈ° μν μλ‘μ΄ νμ μ€ν¬λ¦½νΈ κ³ μ κ΅¬λ¬Έμ΄ ν¬ν¨λ μΈμ΄
- νμ κ²μ¬κΈ°: JS, TS λ‘ μμ±λ μΌλ ¨μ νμΌμμ μμ±λ λͺ¨λ κ΅¬μ± μμλ₯Ό μ΄ν΄νκ³ μλͺ» ꡬμ±λ λΆλΆμ μλ €μ£Όλ νλ‘κ·Έλ¨
- μ»΄νμΌλ¬: νμ κ²μ¬κΈ°λ₯Ό μ€ννκ³ λ¬Έμ λ₯Ό λ³΄κ³ ν ν μ΄μ λμλλ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μμ±νλ νλ‘κ·Έλ¨
- μΈμ΄ μλΉμ€: νμ κ²μ¬κΈ°λ₯Ό μ¬μ©ν΄ VS Code μ κ°μ νΈμ§κΈ°μ κ°λ°μμκ² μ μ©ν μ νΈλ¦¬ν° μ 곡λ²μ μλ €μ£Όλ νλ‘κ·Έλ¨
1.4 νμ μ€ν¬λ¦½νΈ νλ μ΄κ·ΈλΌμ΄λ
μλ΅
1.5 λ‘컬μμ μ€ννκΈ°
μλ΅
1.6 νμ μ€ν¬λ¦½νΈμ λν μ€ν΄
TSκ° μΌλ§λ νλ₯νμ§λ μμ§λ§ μ μ½μ΄ μλ€.
1.6.1 μλͺ»λ μ½λ ν΄κ²°μ±
TSλ JSμ½λλ₯Ό ꡬ쑰ννλ λ° λμμ΄ λμ§λ§, νμ μμ μ± κ°νλ₯Ό μ μΈνκ³ λ ν΄λΉ κ΅¬μ‘°κ° μ΄λ»κ² 보μ¬μΌ νλμ§μ λν΄μλ μ΄λ€ κ²λ κ°μνμ§ μλλ€. λ§€μ° μ’μ νΉμ§μ΄λ€.
λͺ¨λ κ°λ°μκ° μ¬μ©ν μ μλ νλ‘κ·Έλλ° μΈμ΄μ΄λ€. JS μ μν€ν μ² ν¨ν΄ μ€ γ μμ΄λ μ¬μ© κ°λ₯νλ€. νμ μ€ν¬λ¦½νΈλ μ΄λ₯Ό μ§μνλ€.
1.6.2 μλ°μ€ν¬λ¦½νΈλ‘μ νμ₯
TS μ€κ³ λͺ©νλ μ΄λ λ€.
- νμ¬μ λ―Έλμ ECMA μ€ν¬λ¦½νΈ μ μμ λ§μΆλ€.
- λͺ¨λ μλ°μ€ν¬λ¦½νΈ μ½λμ λ°νμ λμμ μ μ§νλ€.
νμ μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈμ μλ λ°©μμ μ ν λ³κ²½νμ§ μλλ€.
1.6.3 μλ°μ€ν¬λ¦½νΈλ³΄λ€ λλ¦Ό
λλ‘λ μΈν°λ· μ μ΅λͺ μ κ°λ°μκ° λ°νμμμ μλ°μ€ν¬λ¦½νΈλ³΄λ€ λ리λ€κ³ λΆννλ κ±Έ λ£κ² λ μ§λ λͺ¨λ₯Έλ€. μ΄ μ£Όμ₯μ λΆμ ννκ³ μ€ν΄μ μμ§κ° μλ€.
νμ μ€ν΄λΉνΈκ° μ½λμ μ μ©νλ μ μΌν λ³κ²½ μ¬νμ μΈν°λ· μ΅μ€νλ‘μ΄ 11κ³Ό κ°μ΄ μ€λλ λ°νμ νκ²½μ μ§μνκΈ° μν΄ μ΄μ λ²μ μ μλ°μ€ν¬λ¦½νΈλ‘ μ½λλ₯Ό μ»΄νμΌνλλ‘ μμ²νλ κ²½μ°μ΄λ€.
μ΄μ νλ μμν¬ λλ€μλ νμ μ€ν¬λ¦½νΈμ μ»΄νμΌλ¬λ₯Ό μ ν μ¬μ©νμ§ μλλ€. λμ νΈλμ€νμΌμ μν λ³λμ λꡬλ₯Ό μ¬μ©νκ³ νμ μ€ν¬λ¦½νΈλ νμ κ²μ¬μ©μΌλ‘λ§ μ¬μ©νλ€.
κ·Έλ¬λ νμ μ€ν¬λ¦½νΈλ μ½λλ₯Ό λΉλνλ λ° μκ°μ΄ μ‘°κΈ λ κ±Έλ¦°λ€. νμ μ€ν¬λ¦½νΈ μ½λλ λΈλΌμ°μ λ Node.js μ κ°μ νκ²½μμ μ€νλκΈ° μ μ μλ°μ€ν¬λ¦½νΈλ‘ μ»΄νμΌλμ΄μΌ νλ€.
λΉλ νμ΄νλΌμΈμ λλΆλΆ μ±λ₯ μ νλ₯Ό 무μνλλ‘ μ€μ λλ€. μ½λμμ λ°μν μ μλ μ€λ₯λ₯Ό λΆμνλ λλ¦° νμ μ€ν¬λ¦½νΈ κΈ°λ₯μ μ€ν κ°λ₯ν μ ν리μΌμ΄μ μ½λ νμΌμ μμ±νλ κ²κ³Όλ λΆλ¦¬λ μ±λ‘ μνλλ€.
1.6.4 μ§νκ° λλ¨?
μΉμ μ§νλ λλμ§ μμκ³ νμ μ€ν¬λ¦½νΈλ λ§μ°¬κ°μ§λ€. νμ μ€ν¬λ¦½νΈ λ²κ·Έ μμ κ³Ό κΈ°λ₯ μΆκ°λ μ§μμ μΌλ‘ μ΄λ£¨μ΄μ§λ€.