νμ€ νμ μ€ λ°μν μλ μλ¬λ€μ μλ ν¬μ€νΈμ λ°λ‘ ν¬μ€ν ν¨!
π [TS - Error Handling] JS β TS λ§μ΄κ·Έλ μ΄μ μ€ λ§λ₯λ¨λ¦° error λͺ¨μzip
1οΈβ£ An import path cannot end with a β.tsβ extension.
2οΈβ£ err λΆλΆμμμ Object is of type βunknownβ error
- μμ€λ λμ νμ
(resolved at runtime)
- νμ€λ μ μ νμ
(set during development)
- νμ€μμ μμ νμ
μ λͺ¨λ μλ¬Έμλ‘!
// ts μ»΄νμΌ λͺ
λ Ήμ΄
tsc app.ts
// νμ€λ μΆλ‘ λ νμ
μ΄λλΌλ μΆλ‘ λ νμ
μ μ΄κΈλλ©΄ μλ¬ μΆλ ₯!!
const number1 = 5; // νμ
μΆλ‘ μ μν΄ νμ
μ λ°λ‘ μ§μ νμ§ μμλ λ¨!
// μ²μμ κ°μ ν λΉνμ§ μκ³ λμ€μ ν λΉν΄μ£Όλ κ²½μ°μ νμ
μ§μ ν΄μ£Όλ κ²μ΄ μ’μ!
let number11: number;
number1 = 5;
// Tuple: λ°°μ΄κ³Ό ννλ κ°μ§λ§ κΈΈμ΄μ νμ
μ΄ κ³ μ λ¨
// 첫λ²μ§Έ μμ νμ
μ number, λλ²μ§Έ μμ νμ
μ stringμΌλ‘ κ³ μ
role: [number, string];
// λ°°μ΄μ μ νν xκ°μ κ°μ΄ νμνκ³ ,
// κ° κ°μ νμ
μ 미리 μκ³ μλ μν©μμ λ°°μ΄λ³΄λ¨ νν μ¬μ©μ΄ μ ν©!
person.role.push('admin');
// pushλ μμΈμ μΌλ‘ ννμμ νμ©λμ νμ€κ° μλ¬λ₯Ό μ‘μ§ λͺ»ν¨,,
// But, μ μ΄λ μλͺ»λ κ°μ ν λΉνμ§ μμ!
person.role[1] = 10;
// index 1 μ리μ νμ
μ stringμΌλ‘ μ§μ λμ΄ μμΌλ―λ‘ μ«μ νμ
κ°μ΄ μ€λ©΄ error!!
person.role = [0, 'admin', 'user'];
// roleμ 2κ°μ μμλ§ μ§λ μ μλλ‘ μ§μ νλλ° μμ κ°μκ° 3κ°λΌμ error!!
// enum {NEW, OLD}: [μ΄κ±°ν] μμ€μμ μ‘΄μ¬νμ§ μμΌλ©° νμ€μλ§ μ‘΄μ¬νλ νμ
enum Role { ADMIN, READ_ONLY, AUTHOR };
// μμ μ«μλ₯Ό 0μΌλ‘ μμνμ§ μμΌλ €λ κ²½μ°, μλ³μμ λ±νΈλ₯Ό μΆκ°νμ¬ λ€λ₯Έ μ«μ μ
λ ₯λ κ°λ₯!
// enum Role { ADMIN = 5, READ_ONLY, AUTHOR = 'AUTHOR' };
// => 5 6 AUTHOR
// μ«μ λ§κ³ λ λ¬Έμ λ±λ ν λΉ κ°λ₯!
role: Role.ADMIN
// type alias(λ³μΉ) => μ¬μ¬μ© κ°λ₯
// Union Typeκ³Ό ν¨κ» μ°λ©΄ κ΅³~! (+ 볡μ‘ν κ°μ²΄ νμ
μλ λ³μΉμ λΆμΌ μ μμ!)
type Combinable = number | string;
// Union Type: μ¬λ¬ νμ
μ§μ νκ³ μΆμ λ μ¬μ©
input2: number | string
// Literal Type: μ«μλ λ¬Έμμ΄μ΄ μλ μ νν κ°μ κ°μ§λ νμ
const num = 5;
// any: κ°μ₯ μ μ°ν νμ
μΌλ‘, λͺ¨λ μ’
λ₯μ κ° μ μ₯ κ°λ₯ + νμ
νμΈ μν X
let anyArr: any[]; // λκ°λ₯Ό ν¬ν¨ν λ°°μ΄
anyArr = ['hi', 10]; // μ΄λ ν νμ
μ μμκ° μλ errorλ₯Ό λ°μμν€μ§ μμ
// But, any νμ
μ¬μ©μ νμ€μ μ₯μ μ΄ μ¬λΌμ Έ μμ€λ₯Ό μ°λ κ²κ³Ό λ€λ₯Όκ² μμ΄μ§λ λ¨μ μ°..
// void: ν¨μμ μλμ μΌλ‘ λ°νλ¬Έμ΄ μλ€λ κ²μ μλ―Έ
// => κ°μ λ°ννμ§ μμ ν¨μλ₯Ό μ¬μ©νλ κ²½μ°
// undefinedλ μ€μ κ°μ λ°ννμ§ μμ λ μ¬μ© κ°λ₯
// λ°νλ¬Έ(return)μ΄ μμΌλ―λ‘ λ°ν νμ
μ΄ voidλ‘ νμ
μΆλ‘ λ¨
function printResult(num: number): void {
console.log('Result: ' + num);
}
// let combineValues: Function; // ν¨μ νμ
μ§μ .
// But, μλͺ»λ ν¨μλ₯Ό μ μ₯ν΄λ errorλ₯Ό λ°μμν€μ§ μκ³ , undefined μΆλ ₯,,
// ν¨μ μΈμ κ°μ, νμ
& λ°ν νμ
κΉμ§ μ§μ
let combineValues: (a: number, b: number) => number;
// μ½λ°±ν¨μ νμ
μ§μ
function addAndHandle(n1: number, n2: number, cb: (num: number) => void) {
const result = n1 + n2;
cb(result);
}
// unknown: anyμ λΉμ·νμ§λ§ λ€λ₯Έ νμ
μΌλ‘, μ¬μ©μκ° λ¬΄μμ μ
λ ₯ν μ§ μ μ μμ λ μ¬μ©
// anyλ³΄λ€ unknown νμ
μ§μ μ΄ λμ μ΄μ λ νμ
κ²μ¬λ₯Ό μνν μ μκΈ° λλ¬Έ!
let userInput: unknown;
let userName: string;
// unknownμ μ¬μ©νλ κ²½μ°, userInputμ νμ¬ μ μ₯λ νμ
μ νμΈν΄μΌ μνλ λ³μμ ν λΉ κ°λ₯
// userName = userInput; // string !== unknown => error!!
// μλ¬ κ°μ²΄λ₯Ό μμ±νμ¬ λκΈ°λ utility function
// => neverλ₯Ό λ°ννλ©°, λ°νκ°μ μμ±νμ§ μμ
// μ΄ ν¨μμ λ°ν νμ
μΌλ‘ void, never λͺ¨λ κ°λ₯
// μ΄ ν¨μλ μ무κ²λ λ°ννμ§ μκ³ ,
// κΈ°λ³Έμ μΌλ‘ μ€ν¬λ¦½νΈ μΌλΆλ₯Ό μΆ©λμν€κΈ° μν κ²μμ κ°λ°μκ° μκ² ν μ μμ
function generateError(message: string, code: number): never {
throw { message: message, errorCode: code };
}
# ν΄λλͺ
λ³κ²½ ν μ격 μ μ₯μμ κ°μ νμΌλ€μ΄ λ΄κΈ΄ λ κ°μ ν΄λκ° μμ±λμλ€..
# ν΄λλͺ
λ³κ²½ μ μ κΈ°μ‘΄ ν΄λλ₯Ό μμ νκ³ μΆμ λ
git add -u
git commit -a -m 'commit message'
git push
μ΄μ μ’ μ½ν λ¬Έμ νΈλκ² μ¬λ°λ€..? λ¬Όλ‘ λ¨Όκ° ν릴 κ² κ°μ κΈ°λ―Έκ° λ³΄μΌλ,, γ
νμ€ κ°μ λ£κΈ° μμνλλ° μμ§ κΈ°μ΄ μ΄λ‘ μ΄μ¬μ κ·Έλ°μ§ μλ‘κ³ μκ°λ³΄λ€ μ¬λ―Έμ° :>