void
λ ν¨μκ° κ·Έ μ΄λ€ κ²λ return νμ§ μμ λ λ°ν νμ
μΌλ‘ μ§μ λλ€.function add(n1: number, n2: number) {
// returnμ νμ
μ λͺ
μμ μΌλ‘ μμ±λμ§ μμκΈ° λλ¬Έμ number νμ
μΌλ‘ μΆλ‘ λμ΄ μ§μ λλ€.
return n1 + n2;
}
function printResult(num: number): void {
// printResult ν¨μλ μ½μμ μΆλ ₯ν λΏμ΄μ§ κ·Έ μ΄λ€ κ²λ return νκ³ μμ§ μκΈ° λλ¬Έμ void νμ
μΌλ‘ μΆλ‘ λμ΄ μ§μ λλ€.
console.log("Result" + num);
}
printResult(add(5, 12)); // 17
function add(n1: number, n2: number) {
return n1 + n2;
}
function printResult(num: number): void {
console.log("Result" + num);
}
printResult(add(5, 12)); // 17
let combineValues;
conbineValues = add;
console.log(combineValues(8, 8)); // 16
combineValues
λ any
νμ
μ΄ λλ€.function add(n1: number, n2: number) {
return n1 + n2;
}
function printResult(num: number): void {
console.log("Result" + num);
}
printResult(add(5, 12)); // 17
let combineValues;
conbineValues = add;
conbineValues = 22; // μ»΄νμΌ μλ¬κ° λμ§ μμ; λ°νμ μλ¬κ° λ°μ!
console.log(combineValues(8, 8)); // 16
combineValues
μ μ«μλ₯Ό ν λΉν΄λ νμ
μ€ν¬λ¦½νΈλ μΈμ§νμ§ λͺ»νκ³ , μ»΄νμΌ μλ¬λ₯Ό λ΄μ§ μλλ€. κ·Έλ¬λ λ°νμμμλ μλ¬κ° λ°μνλ€! μ«μμΈ combineValues
λ₯Ό ν¨μλ‘ μ€ννλ € ν λͺ
νν μ΄μ κ° μκΈ° λλ¬Έμ΄λ€. μ΄λ° μλ¬λ₯Ό λ°©μ§νλ €λ©΄ combineValues
κ° ν¨μλ₯Ό μ§λκ² λλ€κ³ 'λͺ
μ' νλ©΄ λλ€.function add(n1: number, n2: number) {
return n1 + n2;
}
function printResult(num: number): void {
console.log("Result" + num);
}
printResult(add(5, 12)); // 17
let combineValues: Function;
conbineValues = add;
// conbineValues = 22; // μ»΄νμΌ μλ¬κ° λ°μ!
conbineValues = printResult; // λ¬Έμ κ° μμμλ μ»΄νμΌ μλ¬κ° λ°μλμ§ μμ!
console.log(combineValues(8, 8)); // 16
combineValues
μ ν΄λΉλμ§ μλ printResult
ν¨μλ₯Ό ν λΉν΄λ μ»΄νμΌ μλ¬κ° λ°μνμ§ μλλ€λ λ¨μ μ΄ μλ€. μ΄ λλ¬Έμ ν¨μλ§ νμ
μΌλ‘ μ§μ νλ κ²μ΄ μλλΌ, μΈλΆμ μΌλ‘ μ§μ ν΄μ€ μ μλ€λ©΄ λ μ’μ κ²μ΄λ€.let combineValues: () => ;
Function
νμ
μ μ§μ°κ³ ν¨μμ 맀κ°λ³μμ λ°ν κ°μ κ΄λ ¨λ ν¨μλ₯Ό μ€λͺ
νλ ν¨μλ‘ μ¬μ©ν μ μλλ‘ arrow function
μ ννλ‘ νκΈ°νλ€.let combineValues: () => number;
number
λ₯Ό μ§μ νμ¬ μ μ₯ν μ μλλ‘ ν΄μ€λ€.let combineValues: (a: number, b: number) => number;
any
νμ
μ κ±°λΆνκΈ° μν΄μ ν΄λΉ νμ
μ μ¬μ©νλ ν¨μμ²λΌ 맀κ°λ³μ κ°κ°μ νμ
μ μ§μ νκ³ number
λ₯Ό λ°ννλλ‘ μμ±νλ€.function add(n1: number, n2: number) {
return n1 + n2;
}
function printResult(num: number): void {
console.log("Result" + num);
}
printResult(add(5, 12)); // 17
let combineValues: (a: number, b: number) => number;
conbineValues = add;
// conbineValues = printResult; // μ»΄νμΌ μλ¬κ° λ°μ!
console.log(combineValues(8, 8)); // 16
function addAndHandle(n1: number, n2: number, cb: (num: number) => void) {
const result = n1 + n2;
cb(result);
}
addAndHandle(10, 20, (result) => {
console.log(result);
});
number
κ° λ κ²μ΄λΌκ³ μΆλ‘ ν μ μκΈ° λλ¬Έμ addAndHandle
ν¨μκ° λ°λ 맀κ°λ³μμΈ result
λ‘ μ΄λ€ μμ
μ΄λ ν μ μλ€.addAndHandle(10, 20, (result) => {
console.log(result);
});
result
맀κ°λ³μμ number
νμ
μ΄λΌκ³ λͺ
μνμ§ μκ³ λ number
λ‘ μμ
μ μνν μ μλ μ΄μ λ number
λΌλ μΈμ νλλ₯Ό callbackμμ κ°μ Έμ¨λ€κ³ μ°λ¦¬κ° λͺ
μνμκΈ° λλ¬Έμfunction addAndHandle(n1: number, n2: number, cb: (num: number) => void) {
const result = n1 + n2;
cb(result);
}
cb: (num: number) => void
μ΄λ₯Ό λ³΄κ³ νμ
μ€ν¬λ¦½νΈλ result
(num
)κ° number
κ° λ κ²μμ μΆλ‘ νκΈ° λλ¬Έμ΄λ€. λ§μ½ addAndHandle
ν¨μμμ 무μΈκ°λ₯Ό return νκ² λλ€λ©΄ μ΄λ¨κΉ?addAndHandle(10, 20, (result) => {
console.log(result);
return result;
});
return result
λ₯Ό μ
λ ₯νλ©΄ callbackμ΄ λ¬΄μΈκ°λ₯Ό λ°ννκ² λλ€. μ무 κ²λ λ°ννλ©΄ μλλ€κ³ λͺ
μ(void
)νμμλ λ§μ΄λ€. κ·Έλ¬λ μ΄λ νμ
μ€ν¬λ¦½νΈμ μ€μλ λ²κ·Έκ° μλλ€. κΈ°λ³Έμ μΌλ‘ callback νμ
μ void
λ₯Ό μ§μ νλ©΄μ¬κΈ°μ λ°νν μ μλ λͺ¨λ κ°μ 무μνκ² λκΈ° λλ¬Έμ΄λ€.function addAndHandle(n1: number, n2: number, cb: (num: number) => void) {
const result = n1 + n2;
cb(result);
}
addAndHandle
ν¨μμμ 맀κ°λ³μλ‘ λ°λ μ½λ°±ν¨μκ° return
νμ
μΌλ‘ void
λ₯Ό μ€μ ν¨μΌλ‘μ¨ μ무 μμ
λ μννμ§ μμ κ²μ΄λΌκ³ μ
λ ₯ν κ²μ΄λ€.addAndHandle(10, 20, (result) => {
console.log(result);
return result;
});
addAndHandle
μμ μ무 λ¬Έμ μμ΄ λ¬΄μΈκ°λ₯Ό λ°νν μ μλλ° κ·Έ μ΄μ λ μμ μ€λͺ
ν κ²μ²λΌ addAndHandle
κ° λ°λ 맀κ°λ³μμΈ callback ν¨μκ° λ°νλλ κ°μ νμ
μΌλ‘ void
λ₯Ό λͺ
ννκ² μ§μ νκ³ μκΈ° λλ¬Έμ΄λ€.cb: (num: number) => void
addAndHandle
ν¨μλ κ°μ λ°ννλ μ΄λ€ μμ
λ μννμ§ μλλ€.addAndHandle(10, 20, (result) => {
console.log(result);
});
unknown
νμ
μ μ΄λ€ νμ
μ΄λ μ μ₯μ΄ κ°λ₯νμ§λ§ any
νμ
κ³Ό λ€λ₯΄κ² μλνλ€.let userInput: unknown; // μ΄λ€ νμ
μ΄λ μ μ₯μ΄ κ°λ₯νλ€.
let userName: string;
userInput = 5;
userInput = "Max";
userName = userInput; // μ»΄νμΌ error λ°μ!!!
let userInput: any; // μ΄λ€ νμ
μ΄λ μ μ₯μ΄ κ°λ₯νλ€.
let userName: string;
userInput = 5;
userInput = "Max";
userName = userInput; // μ μ μλ λλ€
any
λ νμ
μ€ν¬λ¦½νΈμμ μμ£Ό μ μ°ν νμ
μ΄κ³ , λλΆμ νμ
νμΈμ μννμ§ μλλ‘ νκΈ° λλ¬Έμ μ»΄νμΌ μλ¬κ° λ°μνμ§ μλλ€. λ°λ©΄ unknown
νμ
μ any
λ³΄λ€ μ‘°κΈ λ μ νμ μ΄λΌλ νΉμ§μ κ°λλ€.let userInput: unknown; // μ΄λ€ νμ
μ΄λ μ μ₯μ΄ κ°λ₯νλ€.
let userName: string;
userInput = 5;
userInput = "Max";
userName = userInput; // μ»΄νμΌ error λ°μ!!!
unknown
μ μ¬μ©νλ κ²½μ°, userInput
μ νμ¬ μ μ₯λ νμ
μ νμΈν΄μΌ λ¬Έμμ΄μ μνλ λ³μ userName
μ ν λΉν μ μλ€.let userInput: unknown; // μ΄λ€ νμ
μ΄λ μ μ₯μ΄ κ°λ₯νλ€.
let userName: string;
userInput = 5;
userInput = "Max";
if (typeof userInput === "string") {
}
if
λ¬Έμ λ§λ€μ΄μ typeof userInput
μ μ
λ ₯νκ³ λ¬Έμμ΄κ³Ό κ°μμ§ μΆκ°μ μΌλ‘ νμΈμ ν΄μ€λ€. κ·Έλ¬λ©΄ νμ
μ€ν¬λ¦½νΈλ μ΄ νμΈ μμ
μ κ°μ§νκ³ , μ΄ λΌμΈμ userName
μ μ μ₯νλ€λ κ±Έ μ΄ν΄νκ² λλ€.let userInput: unknown; // μ΄λ€ νμ
μ΄λ μ μ₯μ΄ κ°λ₯νλ€.
let userName: string;
userInput = 5;
userInput = "Max";
if (typeof userInput === "string") {
userName = userInput;
}
if
λ¬Έμμ userInput
μ΄ λ¬Έμμ΄ νμ
μ΄λΌκ³ μ€μ νκΈ° λλ¬Έμ userInput
μ λ¬Έμμ΄ νμ
μ΄ λκ³ , κ·Έλ κΈ° λλ¬Έμ userName
μ΄ λ¬Έμ μμ΄ ν λΉλλ κ²μ΄λ€. λ°λΌμ μΆκ°μ μΈ νμ
κ²μ¬κ° νμνλ€. unknown
νμ
μ unknown
μ μ¬μ©ν΄μ unknown
κ°μ κ³ μ λ κ°μ ν λΉν μ μμΌλ―λ‘, unknown
μ΄ λͺ¨λ νμ
νμΈμ 무μνλany
νμ
λ³΄λ€ ν¨μ¬ λ«λ€. μ΄λ€ νμ
μ μ μ₯ν μ§ μμ§ μ μ μμ§λ§, μΆκ°μ μΈ κ²μ¬λ₯Ό μΆκ°νμ¬ μ΄λ€ μμ
μ μνν μ§ λͺ
μν¨μΌλ‘μ¨ λ¬Έμμ΄λ‘ μμ
μ νλ €λ κ²½μ° λ¬Έμμ΄μ μ μ₯ν μ μλ€. unknown
νμ
μ λ§€λ² μ¬μ©ν λ§ν νμ
μ΄λΌ λ§νκΈ΄ κ³€λνμ§λ§, μμ λ§ν μ΄λ° κ²½μ°μ λ°λΌ any
νμ
μ μ¬μ©νλ λμ μ ννλ κ² ν¨μ¬ λ λμ μλ μλ€.never
νμ
μ ν¨μκ° λ°νν μ μλ νμ
μ΄λ€.function generateError(message: string, code: number) {
throw ;
}
generateError
ν¨μ λ΄λΆμμ μλ¬κ° λμ΄κ°λλ‘(throw) ν κ²μ΄λ€. throw
λ μλ¬ κ°μ²΄λ₯Ό μμ±νμ¬ λκΈ°λ μ νΈλ¦¬ν° ν¨μλ€. μλ°μ€ν¬λ¦½νΈμμμ λ§μ°¬κ°μ§λ‘ κ°μ²΄λ₯Ό λκΈΈ μ μλ€.function generateError(message: string, code: number) {
throw {};
}
message
맀κ°λ³μ μΈμ κ°μ μ μ₯νλ message
μμ±μ κ°μ ΈμμΌ νλ€.function generateError(message: string, code: number) {
throw { message: message, errorCode: code };
}
errorCode
μμ± μμ μ
λ ₯νκ³ , 맀κ°λ³μ code
λ₯Ό μ μ₯ν μ μλλ‘ νλ€.function generateError(message: string, code: number) {
throw { message: message, errorCode: code };
}
generateError("An error occurred!", 500);
errorCode
500μ 맀κ°λ³μλ‘ λ겨μ€λ€.generateError
ν¨μμ ν₯λ―Έλ‘μ΄ μ μ void
μ²λΌ void
λ₯Ό λ°ννλ κ² μλλΌλ κ²μ΄λ€. κ·Έλ¦¬κ³ μ€μ λ‘λ μλ¬λ₯Ό λμ°κ³ μλ€. λ¬Όλ‘ void
κ° λ°νλλλ‘ λͺ
μν μλ μλ€. μ무 κ²λ λ°ννμ§ μκΈ° λλ¬Έμ΄λ€.function generateError(message: string, code: number): void {
throw { message: message, errorCode: code };
}
generateError
ν¨μλ λ¨μν void
μ²λΌ μ무 κ²λ λ°ννμ§ μλ κ²μ μλλ€. λ μ ννκ² μ΄μΌκΈ°νμλ©΄ ν΄λΉ ν¨μλ never
λ₯Ό λ°ννλ©° λ°ν κ°μ μμ±νμ§ μλλ€. λ°ν κ°μ 볡μνλ €λ©΄ console.log(result)
λ₯Ό μ
λ ₯ν λ€μμfunction generateError(message: string, code: number) {
throw { message: message, errorCode: code };
}
const result = generateError("An error occurred!", 500);
console.log(result);
log
κ° μ μλμ§ μλλ€. λμ΄κ°(throw) μλ¬κ° μ€ν¬λ¦½νΈμ μΆ©λνκΈ°λ νλ―λ‘ μ€ν¬λ¦½νΈκ° μ·¨μλκΈ° λλ¬Έμ΄λ€. μ΄ λΈλ‘μ κ°μΈκ³ try catch
λ₯Ό μ
λ ₯νμ¬ μ€ν¬λ¦½νΈλ₯Ό κ³μ μ§νν μλ μμ§λ§ generateError
ν¨μλ κΈ°λ³Έμ μΌλ‘ μ λλ‘(never
) κ°μ μμ±νμ§ μλλ€. λν try catch
λ₯Ό μ¬μ©νλ©΄ ν΄λΉ ν¨μκ° νμ μ€ν¬λ¦½νΈλ μ€ν¬λ¦½νΈμ μΌλΆμ μΆ©λνκΈ° λλ¬Έμ μ무κ²λ λ°ννμ§ μλλ€. λ°λΌμ ν΄λΉ ν¨μμ λ°ν νμ
μ void
λΏλ§ μλλΌ, never
λ κ°λ₯νλ€.function generateError(message: string, code: number): never {
throw { message: message, errorCode: code };
}
generateError("An error occurred!", 500);
never
λ₯Ό λͺ
μμ μΌλ‘ νμ
μ§μ μ νμ§ μκ³ ν΄λΉ λΆκ·Όμ λ§μ°μ€ 컀μλ₯Ό μ¬λ¦¬λ©΄ void
κ° μλμΌλ‘ μΆλ‘ λλ€λ κ²μΈλ° μ΄λ never
κ° μλ‘μ΄ μ νμ΄ μλκΈ° λλ¬Έμ΄λ€. κ·Έλ¬λκΉ μ€λ μ λΆν° never
λ μ¬μ©λμμ§λ§ νμ
μ€ν¬λ¦½νΈμ μ΄κΈ° λ²μ λΆν° μ¬μ©λμ§ μμκΈ° λλ¬Έμ μμ§ λ°μμ΄ λμ§ μλ κ²μ΄λ λ»μ΄λ€. κ·Έλ¬λ never
κ° μ무κ²λ λ°ννμ§ μλλ€λ κ²μ νμ€ν νκΈ° μν΄ never
λ₯Ό λͺ
μμ μΌλ‘ μ€μ ν μ μλ€. μ΄λ° μμ
μ μνν¨μΌλ‘μ¨ μ½λ νμ§μ κ΄μ μμ μλλ₯Ό λ λΆλͺ
ν ν μ μμΌλ©°, void
μ λ체 νμ
μΌλ‘ μ¬μ©νκΈ°μ μ μ νλ€. κ·Έλ¬λκΉ never
νμ
μ λ°ννλ ν¨μλ μ무κ²λ λ°ννμ§ μμΌλ©°, κΈ°λ³Έμ μΌλ‘ μ€ν¬λ¦½νΈλ μ€ν¬λ¦½νΈμ μΌλΆλ₯Ό μΆ©λμν€κ±°λ λ§κ°νΈλ¦¬κΈ° μν κ²μμ μ½λλ₯Ό μ½λ κ°λ°μ μμ λΉ λ₯΄κ² μ΄ν΄μν¬ μ μκ² λλ κ²μ΄λ€.π¨ ν΄λΉ ν¬μ€ν μ Udemyμ Typescript :κΈ°μ΄λΆν° μ€μ ν νλ‘μ νΈκΉμ§ with React + NodeJS κ°μλ₯Ό λ² μ΄μ€λ‘ ν κΈ°λ‘μ λλ€.
βπ» κ°μ git repo λ°λ‘κ°κΈ°