LearningTS Chapter 3 - YDP-SPLOUNGE-CLUB/typescript-study GitHub Wiki
3. μ λμΈκ³Ό 리ν°λ΄
νμ μ€ν¬λ¦½νΈκ° ν΄λΉ κ°μ λ°νμΌλ‘ μΆλ‘ μ μννλ λ κ°μ§ ν΅μ¬ κ°λ μ μκ°νλ€.
- μ λμΈ: κ°μ νμ©λ νμ μ λ κ° μ΄μμ κ°λ₯ν νμ μΌλ‘ νμ₯νλ κ²
- λ΄λ‘μ: κ°μ νμ©λ νμ μ΄ νλ μ΄μμ κ°λ₯ν νμ μ΄ λμ§ μλλ‘ μ’νλ κ²
3.1 μ λμΈ νμ
μ λμΈ νμ μΌλ‘ μ μλ μ¬λ¬ νμ μ€ νλμ νμ μΌλ‘ λ κ°μ μμ±μ μ¬μ©νλ €λ©΄ μ½λμμ κ°μ΄ λ³΄λ€ κ΅¬μ²΄μ μΈ νμ μ€ νλλΌλ κ²μ νμ μ€ν¬λ¦½νΈμκ² μλ €μΌ νλ€. μ΄ κ³Όμ μ λ΄λ‘μ μ΄λΌ νλ€.
3.2 λ΄λ‘μ
λ΄λ‘μμ κ°μ΄ μ μ μ μΈ νΉμ μ΄μ μ μ μΈλ κ²λ³΄λ€ ꡬ체μ μΈ νμ μμ μ½λμμ μ μΆνλ κ²μ΄λ€.
νμ μ μ’νλ λ° μ¬μ©ν μ μλ λ Όλ¦¬μ κ²μ¬λ₯Ό νμ κ°λ λΌκ³ νλ€.
TSκ° μ½λμμ νμ μ μ’νλ λ° νν μ¬μ©νλ νμ κ°λ λ κ°μ§λ₯Ό μ΄ν΄λ³΄μ.
3.2.1 κ° ν λΉμ ν΅ν λ΄λ‘μ
λ³μμ κ°μ μ§μ ν λΉνλ©΄ νμ μ€ν¬λ¦½νΈλ λ³μμ νμ μ ν λΉλ κ°μ νμ μΌλ‘ μ’νλ€.
let admiral: number | string;
admiral = "String";
admiral.toUpperCase(); // OK
admiral.toFixed(); // Error toFixed does not exist on type string
3.2.2 쑰건 κ²μ¬λ₯Ό ν΅ν λ΄λ‘μ
let scientist = Math.random() > 0.5 ? "Rosalin Franlin" : 51;
if (scientist === "Rosalin Franlin") {
scientist.toUpperCase(); // OK
}
scientist.toUpperCase(); // Error does not exist on type string | number
3.2.3 typeof κ²μ¬λ₯Ό ν΅ν λ΄λ‘μ
3.3 리ν°λ΄ νμ
리ν°λ΄ νμ μ μ’ λ ꡬ체μ μΈ λ²μ μ μμ νμ μ΄λ€.
const philsopher = "Hypatia";
philsopherλ μ΄λ€ νμ μΈκ°? μΌν 보면 string νμ μ΄λΌκ³ λ§ν μ μκ³ μ€μ λ‘λ string νμ μ΄λ€.
philsopher λ λ¨μ§ string νμ μ΄ μλ Hypatia λΌλ νΉλ³ν κ°μ΄λ€. philsopher μ νμ μκΈ°μ μ μΌλ‘ λ ꡬ체μ μΈ Hypatia λ€.
μμ νμ κ° μ€ μ΄λ€ κ²μ΄ μλ νΉμ μμ―κ°μΌλ‘ μλ €μ§ νμ μ΄ λ¦¬ν°λ΄ νμ μ΄λ€. μμ νμ string μ μ‘΄μ¬ν μ μλ λͺ¨λ κ°λ₯ν λ¬Έμμ΄μ μ§ν©μ λνλ΄μ§λ§ 리ν°λ΄ νμ μΈ Hypatia λ νλμ λ¬Έμμ΄λ§ λνλΈλ€.
3.3.1 리ν°λ΄ ν λΉ κ°λ₯μ±
μμ number μ string κ³Ό κ°μ μλ‘ λ€λ₯Έ μμ νμ μ΄ μλ‘ ν λΉλμ§ λͺ»νλ€λ κ²μ 보μλ€. λ§μ°¬κ°μ§λ‘ 0κ³Ό 1μ²λΌ λμΌν μμ νμ μΌμ§λΌλ μλ‘ λ€λ₯Έ 리ν°λ΄ νμ μ μλ‘ ν λΉν μ μλ€.
3.4 μ격ν null κ²μ¬
리ν°λ΄λ‘ μ’νμ§ μ λμΈμ νμ νμ μ€ν¬λ¦½νΈμμ μ격ν null κ²μ¬λΌ λΆλ₯΄λ νμ μμ€ν μμμΈ μ μ¬μ μΌλ‘ μ μλμ§ μμ undefined κ° μΌλ‘ μμ ν λ λλλ¬μ§λ€.
3.4.1 μμ΅ λ¬λ¬μ μ€μ
μμ΅ λ¬λ¬μ μ€μλ λ€λ₯Έ νμ μ΄ νμν μμΉμμ null κ°μ μ¬μ©νλλ‘ νμ©νλ λ§μ νμ μμ€ν μ κ°λ¦¬ν€λ μ κ³ μ©μ΄
νμ μ€ν¬λ¦½νΈ μ»΄νμΌλ¬ μ΅μ μ strictNullChecks λ μ격ν null κ²μ¬λ₯Ό νμ±νν μ§ μ¬λΆλ₯Ό κ²°μ νλ€.
strickNullChecks λ₯Ό λΉνμ±νλ©΄ μ½λμ λͺ¨λ νμ μ null | undefined λ₯Ό μΆκ°ν΄μ¬ λͺ¨λ λ³μκ° null λλ undefined λ₯Ό ν λΉκ°λ₯νλ€.
3.4.2 μ°Έ κ²μ¬λ₯Ό ν΅ν λ΄λ‘μ
if (true) {
// ...
}
3.4.3 μ΄κΈ°κ°μ΄ μλ λ³μ
νμ μ€ν¬λ¦½νΈλ κ°μ΄ ν λΉλ λκΉμ§ λ³μκ° undefined μμ μ΄ν΄ν λ§νΌ μΆ©λΆν μ리νλ€.
κ°μ΄ ν λΉλκΈ° μ μ μμ± μ€ νλμ μ κ·Όνλ €λ κ²μ²λΌ ν΄λΉ λ³μλ₯Ό μ¬μ©νλ €κ³ μλνλ©΄ λ€μκ³Ό κ°μ μ€λ₯ λ©μΈμ§κ° λνλλ€.
let math: string;
math?.length; // Error variable math is used before being assigned;
math = "Mark";
math.length; // OK
λ³μ νμ μ undefined κ° ν¬ν¨λμ΄ μλ κ²½μ°μλ μ€λ₯κ° λ³΄κ³ λμ§ μμ΅λλ€. λ³μ νμ μ | undefined λ₯Ό μΆκ°νλ©΄ μ ν¨ν νμ μ΄κΈ° λλ¬Έμ μ¬μ© μ μλ μ μν νμκ° μμμ νμ μ€ν¬λ¦½νΈκ° λνλΈλ€.
μ΄μ μ½λ μ€λν«μμ string | undefined λΌκ³ μ μΈνλ©΄ μ€λ₯κ° λ°μνμ§ μλλ€.