π€‘
25μΌμ°¨
Part 4. TypeScript Essentials
Ch 3. Type System
Ch 4. TypeScript Compiler
Ch 3. Type System
π nolmplicitAny μ΅μ μ μΌλ©΄
νμ μ λͺ μμ μΌλ‘ μ§μ νμ§ μμ κ²½μ°, νμ μ€ν¬λ¦½νΈκ° μΆλ‘ μ€ any λΌκ³ νλ¨νκ² λλ©΄, μ»΄νμΌ μλ¬λ₯Ό λ°μμμΌ λͺ μμ μΌλ‘ μ§μ νλλ‘ μ λνλ€.
π strictNullChecks μ΅μ μ μΌλ©΄
λͺ¨λ νμ μ μλμΌλ‘ ν¬ν¨λμ΄ μλ null κ³Ό undefined λ₯Ό μ κ±°ν΄μ€λ€.
π noImplicitReturns μ΅μ μ μΌλ©΄
ν¨μ λ΄μμ λͺ¨λ μ½λκ° κ°μ 리ν΄νμ§ μμΌλ©΄, μ»΄νμΌ μλ¬λ₯Ό λ°μμν¨λ€.
π Structural Type System vs Nominal Type System
- Structural Type System: κ΅¬μ‘°κ° κ°μΌλ©΄, κ°μ νμ μ΄λ€.
- Nominal Type System: κ΅¬μ‘°κ° κ°μλ μ΄λ¦μ΄ λ€λ₯΄λ©΄, λ€λ₯Έ νμ μ΄λ€.
π νμ νΈνμ± (Type Compatibility)
- μλΈ νμ
- κ°κ±°λ μλΈ νμ μΈ κ²½μ°, ν λΉμ΄ κ°λ₯νλ€. => 곡λ³
- ν¨μμ 맀κ°λ³μ νμ
λ§ κ°κ±°λ μνΌνμ
μΈ κ²½μ°, ν λΉμ΄ κ°λ₯νλ€. => λ°λ³
- π strictFunctionTypes μ΅μ μ μΌλ©΄
- ν¨μλ₯Ό ν λΉν μμ ν¨μμ 맀κ°λ³μ νμ μ΄ κ°κ±°λ μνΌνμ μΈ κ²½μ°κ° μλ κ²½μ°, μλ¬λ₯Ό ν΅ν΄ κ²½κ³ νλ€.
π νμ λ³μΉ (Type Alias)
μ§μ μμ±ν΄μΌνλ νμ μ λ€λ₯Έ μ΄λ¦μΌλ‘ μ§μ ν μ μλ€. => λ°λ³΅(νμ΄ν)μ μ€μ¬μ€λ€.
Ch 4. TypeScript Compiler
π Compliation Context
TS λ₯Ό JS λ‘ λ³ννλ TypeScript Compilerμ λ°©μμ μ§μ ν΄ λ κ²μ Compliation Context λΌκ³ νκ³ , tscofing.json νμΌμ μ μΈλμ΄ μλ€.
https://json.schemastore.org/tsconfig
π μ΅μμ νλ‘νΌν°
- compileOnSave
- μ μ₯ν λ μ»΄νμΌ
- true/false (default false)
- extends
- μμμ λ°μμ¬ λΆλͺ¨μ κ²½λ‘ μ€μ
- νμΌ(μλ) κ²½λ‘λͺ (string)
- compileOptions β
- typeRoots, types
- λΌμ΄λΈλ¬λ¦¬λ₯Ό ./node_modules/@types λ‘ μ§μ ν΄μ€λ€. (λ΄μ₯ type definition μμ€ν )
- typeRoots: κ²½λ‘λ₯Ό μ°Ύμμ μ¬μ©
- types: λͺ¨λ μ΄λ¦μμ μ°Ύμμ μ¬μ©
- target, lib
- target: JS λ²μ μ€μ (λΉλμ κ²°κ³Όλ¬Όμ μ΄λ€ λ²μ μΌλ‘ ν κ²μ΄λ)
- lib: declaration file μ€μ (κΈ°λ³Έ type definition λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄λ€ κ²μ μ¬μ©ν κ²μ΄λ)
- outDir, outFile, rootDir
- outFile: λͺ¨λλ€μ ν©ν΄μ νλμ νμΌλ‘ λ§λ€μ΄μ€λ€.
- outDir: μ»΄νμΌ λ λͺ¨λλ€μ λͺ¨μλλ€.
- rootDir: root λλ ν 리 μ€μ
- strict
- μ격νκ² νμ μ νμΈ
- !!무쑰건 true λ‘ νκΈ°!!
- --nolmplicitAny
- --nolmplicitThis
- --strictNullChecks β
- --strictFuntionTypes
- --strictPropertyInitialization
- --strictBindCallApply
- --alwaysStrict
- typeRoots, types
- files
- μ μΌ κ°λ ₯
- μ»΄νμΌ ν νμΌ μ μ
- include
- 맀μΉλλ νμΌ ν¬ν¨
- exclude
- νμΌ μ μΈ
- μ€μ μ νλ©΄ 4κ°μ§(node_modules, bower_componetns, jspm_packages, <outDir>)λ₯Ό defaultλ‘ μ μΈνλ€.
- references
typeAcquisition- tsNode
// tsconfig.json
{
"compileOnSave": true,
"extends": "./base.json",
"compilerOptions": {}
}
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src",
}
"compilerOptions": {
"outDir": "./dist",
// "rootDir": "./src",
}