Breaking Programming TypeScript - kskim7714/learn_typescript GitHub Wiki
Programming TypeScript: Making your applications scale
6μ₯ κ³ κΈ νμ
6.1.4 νμ
λνκΈ° (Type Widening)
- νμ
μΆλ‘ κ°λ
μ μ΄ν΄νλ €λ©΄ κΌ μμ§.
- νμ
μ (μ λ°μ΄ μλ) μΌλ°μ μΌλ‘ μΆλ‘ ν¨.
- let/varμ
리ν°λ΄ κ°
μ΄ λ¦¬ν°λ΄μ΄ μν κΈ°λ³Έ νμ
μΌλ‘ λνμ§.
let a = 'x' // string
const d = { x: 3 } // {x: numbr}
enum E {X, Y, Z}
let e = E.X // E
- constλ‘ ν λ νμ
μ΄ μ΄λ»κ² λ κΉ?
const a = 'x' // 'x'
enum E {X, Y, Z}
const e = E.X // E.X
- νμ
μ λͺ
μνλ©΄ νμ
μ΄ λμ΄μ§μ§ μμ.
let a: 'x' = 'x' // 'x'
const d: {x: 3} = {x: 3} // {x: 3}
- νμ
μ μΈ μμ΄ ν λΉ, constμ ν λΉ νμ let/varλ‘ μ¬ν λΉνλ©΄ νμ
μ΄ λμ΄μ§.
const a = 'x' // 'x'
let b = a // string
- νμ
μ μΈ ν¬ν¨ ν λΉ, constμ ν λΉ νμλ let/varλ‘ ν΄λ νμ
μ΄ λμ΄μ§μ§ μμ.
const c:'x' = 'x' // 'x'
let d = c // 'x'
- null/undefinedλ‘ μ΄κΈ°ννλ©΄ any νμ
μΌλ‘ λμ΄μ§.
let a = null // any
a = 3 // any
a = 'b' // any
- null/undefinedλ‘ μ΄κΈ°νλ λ³μκ° μ μΈ λ²μλ₯Ό λ²μ΄λλ©΄ μ’μ νμ
μΌλ‘ λ³νλ¨.
function x() {
let a = null // any
a = 3 // any
a = 'b' // any
return a
}
// client calls
x() // string
const νμ
μ΄κ³Ό νλ‘νΌν° νμ
6.1.5 μ μ
μ°¨λ³νλ μ λμ¨ νμ
6.1.6 μ’
ν©μ± (totality λλ μ² μ κ²μ¬ exhaustiveness checking)
6.3 κ³ κΈ κ°μ²΄ νμ
6.3.1 κ°μ²΄ νμ
μ νμ
μ°μ°μ (&, |)
ν€μΈ (key in) μ°μ°μ: JSON μΌλΆλΆμ νμ
μΌλ‘ ν λΉ
keyof μ°μ°μ: λͺ¨λ ν€λ₯Ό λ°°μ΄λ‘ μ»κΈ°
6.3.2 Record νμ
6.3.3 맀νλ νμ
λ΄μ₯ 맀νλ νμ
6.3.4 μ»΄ν¨λμΈ κ°μ²΄ ν¨ν΄
6.4 κ³ κΈ ν¨μ νμ
λ€
6.4.1 ννμ νμ
μΆλ‘ κ°μ
6.4.2 μ¬μ©μ μ μ νμ
μμ μ₯μΉ
6.5 μ‘°κ±΄λΆ νμ
6.5.1 λΆλ°°μ 쑰건λΆ
6.5.2 infer ν€μλ
6.5.3 λ΄μ₯ μ‘°κ±΄λΆ νμ
λ€
6.6 νμΆκ΅¬