π° TypeGuardλ?
TypeScriptμμ λ³μμ νμ μ 보μ₯νκΈ° μν΄ μ¬μ©λλ κΈ°λ₯
TypeScriptμμλ μ μ νμ κ²μ¬λ₯Ό μννμ¬ μ»΄νμΌ νμμ μ½λμμ λ°μν μ μλ νμ κ΄λ ¨ μ€λ₯λ₯Ό μλ°©ν μ μλ€.
νμ§λ§ κ²½μ°μ λ°λΌ λ³μμ νμ μ΄ λμ μΌλ‘ λ³κ²½λ μ μλ κ²½μ°κ° μλ€.
μ΄λ° κ²½μ°μ TypeGuardλ₯Ό μ¬μ©νμ¬ λ³μμ νμ μ νμΈνκ³ , ν΄λΉ νμ μΌλ‘ μ½λλ₯Ό μμ νκ² μ€νν μ μλλ‘ λ³΄μ₯νλ€.
TypeGuardλ μ£Όλ‘ μ‘°κ±΄λΆ νμ κ³Ό ν¨κ» μ¬μ©λλ©°, λ³μκ° νΉμ νμ μΈμ§ μ¬λΆλ₯Ό νμΈνκΈ° μν΄ μ¬μ©λλ€.
π° TypeGuard κ·μΉ
TypeGuard ν¨μλ is ν€μλλ‘ μμνλ μ΄λ¦μ κ°μ§ ν¨μλ‘ ννλλ€.
ν¨μμ μ΄λ¦μ is λ€μμ κ²μ¬νκ³ μ νλ νμ μ μ΄λ¦μ΄ μ¨λ€. μλ₯Ό λ€μ΄, λ€μμ isNumberλΌλ μ΄λ¦μ TypeGuard ν¨μλ₯Ό λ§λλ μμμ΄λ€.
function isNumber(value: unknown): value is number {
return typeof value === 'number';
}
μ μ½λμμ isNumber ν¨μλ valueκ° number νμ μΈμ§ κ²μ¬νκ³ , κ·Έ κ²°κ³Όλ₯Ό boolean κ°μΌλ‘ λ°ννλ€.
λ°νκ°μΌλ‘ value is numberλ₯Ό μ¬μ©νλλ°, μ΄κ²μ λ°νκ°μ΄ trueμΌ λ valueκ° number νμ μμ λνλΈλ€.
λ°λΌμ, isNumber ν¨μλ₯Ό μ¬μ©νμ¬ κ°μ κ²μ¬ν λλ λ€μκ³Ό κ°μ΄ μμ±ν μ μλ€.
function processValue(value: unknown) {
if (isNumber(value)) {
// value is number
console.log(value + 1);
} else {
console.log('value is not a number');
}
}
isNumber ν¨μλ₯Ό μ¬μ©νμ¬ valueλ₯Ό κ²μ¬ν λ, if (isNumber(value)) λ¬Έμ₯μ μ¬μ©νλ€.
μ΄ λ isNumber(value)μ λ°νκ°μ΄ trueμΌ λ, valueλ number νμ μ΄ λκ³ , μ΄λ₯Ό νμ©νμ¬ μμ νκ² μ°μ°μ μνν μ μλ€.
valueκ° number νμ μ΄ μλ κ²½μ°, else λΈλ‘μ΄ μ€νλμ΄ μ²λ¦¬λλ€.
TypeGuard ν¨μλ₯Ό μ΄μ©νμ¬, λ³μκ° νΉμ νμ μΈμ§ κ²μ¬νκ³ κ·Έ κ²°κ³Όμ λ°λΌ μμ νκ² μμ μ μνν μ μλ€.
'Basic > TypeScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
error TS18046: 'err' is of type 'unknown' μλ¬ ν΄κ²° (0) | 2023.05.12 |
---|---|
TypeScriptλ? (0) | 2022.10.30 |
Typescriptλ₯Ό μ΄μ©ν tree μν μ½λ (0) | 2022.07.26 |