LearningTS Chapter 14 - YDP-SPLOUNGE-CLUB/typescript-study GitHub Wiki
14μ₯. ꡬ문 νμ₯
νμ μ€ν¬λ¦½νΈ κ°μ μμ μ§ν© μΈμ΄μ νΉμ μλ‘μ΄ λ°νμ κΈ°λ₯μΌλ‘ μλ°μ€ν¬λ¦½νΈ ꡬ문μ νμ₯νλ λ°©μμ λ€μκ³Ό κ°μ μ΄μ λ‘ μΈν΄ λμ μ¬λ‘λ‘ κ°μ£Όνλ€.
- λ°νμ ꡬ문 νμ₯μ΄ μ΅μ λ²μ μλ°μ€ν¬λ¦½νΈμ μλ‘μ΄ κ΅¬λ¬Έκ³Ό μΆ©λν μ μλ€.
- μΈμ΄λ₯Ό μ²μ μ νλ νλ‘κ·Έλλ¨Έκ° μλ°μ€ν¬λ¦½νΈκ° λλλ κ³³κ³Ό λ€λ₯Έ μΈμ΄κ° μμνλ κ³³μ μ΄ν΄νκΈ° μ΄λ ΅κ² λ§λ λ€.
- μμ μ§ν© μΈμ΄ μ½λλ₯Ό μ¬μ©νκ³ μλ°μ€ν¬λ¦½νΈλ₯Ό λ΄λ³΄λ΄λ νΈλμ€νμΌλ¬μ 볡μ‘μ±μ μ¦κ°μν¨λ€.
14.1 ν΄λμ€ λ§€κ°λ³μ μμ±
μλ°μ€ν¬λ¦½νΈ ν΄λμ€μμλ μμ±μμμ λ§€κ°λ³μλ₯Ό λ°κ³ μ¦μ ν΄λμ€ μμ±μ ν λΉνλ κ²μ΄ μΌλ°μ μ΄λ€.
class Enginner {
readonly area: string;
constructor(area: string) {
this.area = area;
}
}
new Enginner("mechancial").area;
νμ μ€ν¬λ¦½νΈλ μ΄λ¬ν μ’ λ₯μ λ§€κ°λ³μ μμ±μ μ μΈνκΈ° μν λ¨μΆ ꡬ문μ μ 곡νλ€. μμ±μ ν΄λμ€ μμ±μμ μμ λΆλΆμ λμΌν νμ μ λ©€λ² μμ±μΌλ‘ ν λΉλλ€.
μμ±μμ λ§€κ°λ³μ μμ readonly λλ public, protected, private μ νμ μ€ νλλ₯Ό λ°°μΉνλ©΄ νμ μ€ν¬λ¦½νΈκ° λμΌν μ΄λ¦κ³Ό νμ μ μμ±λ μ μΈνλλ‘ μ§μνλ€.
class Enginner {
constructor(readonly area: string) {
}
}
λ§€κ°λ³μ μμ±μ ν΄λμ€ μμ±μμ 맨 μ²μμ ν λΉλλ€. λ§€κ°λ³μ μμ±μ λ€λ₯Έ λ§€κ°λ³μ λλ ν΄λμ€ μμ±κ³Ό νΌν©λ μ μλ€.
class NamedEnginner {
fullName: string;
constructor(
name: string,
public area: sring,
) {
this.fullName `${name}, ${area} enginner`
}
}
14.2 μ€νμ μΈ λ°μ½λ μ΄ν°
ν΄λμ€λ₯Ό ν¬ν¨νλ λ§μ λ€λ₯Έ μΈμ΄μμλ ν΄λμ€μ ν΄λμ€μ λ©€λ²λ₯Ό μμ νκΈ° μν μΌμ’ μ λ°νμ λ‘μ§μ μ£Όμμ λ¬κ±°λ λ°μ½λ μ΄ν ν μ μλ€.
ECMAScript μμλ μμ§ λ°μ½λ μ΄ν°λ₯Ό μΉμΈνμ§ μμλ€.
νμ μ€ν¬λ¦½νΈλ λ°μ½λ μ΄ν°λ₯Ό μ€νμ μΌλ‘ μ¬μ©ν μ μλλ‘ experimentalDecorators μ»΄νΌμΌλ¬ μ΅μ μ μ 곡νλ€.
14.3 μ΄κ±°ν
μλ°μ€ν¬λ¦½νΈλ μ΄κ±°ν ꡬ문μ ν¬ν¨νμ§ μμΌλ―λ‘ μ΄κ±°νμ λ°°μΉν΄μΌ νλ κ³³μ μΌλ°μ μΈ κ°μ²΄λ₯Ό μ¬μ©νλ€.
const StatusCode = {
InternalServerError: 500,
NotFound: 400,
OK: 200,
...
} as const;
StatusCode.InternalServerError; // 500
νμ μ€ν¬λ¦½νΈμμ μ΄κ±°ν κ°μ κ°μ²΄λ₯Ό μ¬μ©ν λ κΉλ€λ‘μ΄ μ μ κ°μ΄ ν΄λΉ κ°μ²΄μ κ° μ€ νλμ¬μΌ ν¨μ λνλ΄λ νλ₯ν νμ μμ€ν λ°©λ²μ΄ μλ€λ κ²μ΄λ€.
keyof λ typeof νμ μ νμλ₯Ό ν¨κ» ν¨κ» μ¬μ©ν΄ νλμ κ°μ ν΄νΉνλ λ°©λ²λ μλ€. νμ§λ§ λ§μ μμ ꡬ문μ μ λ ₯ν΄μΌ νλ€.
νμ μ€ν¬λ¦½νΈλ νμ μ΄ number λλ string μΈ λ¦¬ν°λ΄ κ°λ€μ κ°λ κ°μ²΄λ₯Ό μμ±νκΈ° μν enum ꡬ문μ μ 곡νλ€.
μ»΄νμΌλ μλ°μ€ν¬λ¦½νΈμμ μ΄κ±°νμ μ΄μ μ¬μνλ κ°μ²΄λ‘ μ»΄νμΌ λλ€. μ΄κ±°νμ κ° λ©€λ²λ ν΄λΉ κ°μ κ°λ κ°μ²΄ λ©€λ² ν€κ° λκ³ κ·Έ λ°λμ κ²½μ°λ λ§μ°¬κ°μ§μ΄λ€.
14.3.3 const μ΄κ±°ν
μ΄κ±°νμ λ°νμ κ°μ²΄λ₯Ό μμ±νλ―λ‘ λ¦¬ν°λ΄ κ° μ λμΈμ μ¬μ©νλ μΌλ°μ μΈ μ λ΅λ³΄λ€ λ λ§μ μ½λλ₯Ό μμ±νλ€.
νμ μ€ν¬λ¦½νΈλ const μ νμλ‘ μ΄κ±°νμ μ μΈν΄ μ»΄νμΌλ μλ°μ€ν¬λ¦½νΈ μ½λμμ κ°μ²΄ μ μμ μμ± μ‘°ν¬λ₯Ό μλ΅νλλ‘ μ§μνλ€.
const enum DisplayHint {
Opaque = 0,
Semitransparent,
Transparent,
}
let displayHint = DisplayHint.Transparent;
μ»΄νμΌλ μλ°μ€ν¬λ¦½νΈ μ½λμλ μ΄κ±°ν μ μΈμ΄ λͺ¨λ λλ½λκ³ μ΄κ±°νμ κ°μ λν μ£Όμμ μ¬μ©νλ€.