npx create-react-app . --template typescript
- νμ
μ΄ μ μλ λ³μλ€μ λν΄μλ νμ
μ 미리 κ²°μ νκ³ ,
νμ μ΄ μ μλμ΄ μμ§ μμ λ³μλ€μ λν΄μλ νμ μ€ν¬λ¦½νΈκ° μ΄κΈ°νλ κ°μ κΈ°μ€μΌλ‘ μμμ νμ μ μΆλ‘ νλ€ - μ½λ μ€ν μ κ²μ¬λ₯Ό ν΅ν΄ νμ μμ μ±μ ν보νλ€
- νμ μ€ν¬λ¦½νΈλ AST(μΆμ λ¬Έλ² νΈλ¦¬)μ Type κ²μ¬ κ³Όμ μ κ±°μΉλλ° μ±κ³΅νλ©΄ ASTκ° JavaScript μ½λλ‘ λ³νλλ€
- λ§μ½ μ½λμ μ€λ₯κ° μμ΄μ Type κ²μ¬λ₯Ό μ€ν¨νκ² λλ©΄ μ»΄νμΌμ μ’ λ£λλ€
- νμ μ€λ₯κ° μλ νμ μ€ν¬λ¦½νΈ μ½λλ μ»΄νμΌ μ Type κ²μ¬λ₯Ό ν΅κ³Όνκ³ νμ κ΄λ ¨ λ¬Έλ²λ€μ μμ λ μμ ν μλ°μ€ν¬λ¦½νΈ μ½λλ‘ λ³νλλ€
μλ£ μΆμ²: winterlood
-
tsconfig.json μλ μμ±
tsc --init -
tsconfig.json 컀μ€ν
{ "compilerOptions": { "target": "ESNext", //μ»΄νμΌ κ²°κ³Ό μμ±λλ μλ°μ€ν¬λ¦½νΈ μ½λμ λ²μ μ μ€μ "module": "ESNext", //λ³νλλ μλ°μ€ν¬λ¦½νΈ μ½λμ λͺ¨λ μμ€ν μ μ€μ "outDir": "dist", //μ»΄νμΌ κ²°κ³Ό μμ±ν μλ°μ€ν¬λ¦½νΈ μ½λμ μμΉλ₯Ό κ²°μ "strict": true, //νμ μ€ν¬λ¦½νΈ μ»΄νμΌλ¬μ νμ κ²μ¬ μκ²©ν¨ μμ€ "moduleDetection": "force" //νμ μ€ν¬λ¦½νΈμ λͺ¨λ νμΌμ κΈ°λ³Έμ μΌλ‘ μ μ νμΌ(λͺ¨λ)λ‘ μ·¨κΈλλλ° ν΄λΉ μ΅μ μ "force"λ‘ μ€μ νλ©΄ μλμΌλ‘ λͺ¨λ νμ μ€ν¬λ¦½νΈ νμΌμ΄ λ‘컬 νμΌ(λͺ¨λ)λ‘ μ·¨κΈ }, "include": ["src"] //tscμκ² μ»΄νμΌ ν νμ μ€ν¬λ¦½νΈ νμΌμ λ²μμ μμΉλ₯Ό μλ €μ€ }
- μμνμ κ³Ό 리ν°λ΄νμ
- λ°°μ΄κ³Ό νν
- κ°μ²΄
- νμ λ³μΉκ³Ό μΈλ±μ€ μκ·Έλμ²
- enum νμ
- anyμ unknown νμ
- voidμ never νμ
- νμ κ³μΈ΅λμ ν¨κ» κΈ°λ³Ένμ μ΄ν΄λ³΄κΈ°
- κ°μ²΄ νμ μ νΈνμ±
- λμ νμ
- νμ μΆλ‘
- νμ λ¨μΈ
- νμ μ’νκΈ°
- μλ‘μ μ λμ¨ νμ
- ν¨μ νμ
- ν¨μ νμ ννμκ³Ό νΈμΆ μκ·Έλμ³
- ν¨μ νμ μ νΈνμ±
- ν¨μ μ€λ²λ‘λ©
- μ¬μ©μ μ μ νμ κ°λ
- μ λ€λ¦ μκ°
- νμ λ³μ μμ©νκΈ°
- map, forEach λ©μλ νμ μ μνκΈ°
- μ λ€λ¦ μΈν°νμ΄μ€, μ λ€λ¦ νμ λ³μΉ
- μ λ€λ¦ ν΄λμ€
- νλ‘λ―Έμ€μ μ λ€λ¦