
함수의 타입 지정: 매개변수와 반환값의 타입을 명확히 지정하는 것
function greet(name: string): string {
return `Hello, ${name}!`;
}
const expr = function (name: string): string {
return `Hello, ${name}!`;
};
화살표 함수
const exprArrow = (name: string): string => `Hello, ${name}!`;
함수 타입 지정
const expr2: (name: string) => string = function (name) {
return `Hello, ${name}!`;
};
void는 리턴값이 없는 함수
function greet(name: string): void {
console.log(`Hello, ${name}!`);
}
const expr = function (name: string): void {
console.log(`Hello, ${name}!`);
};
const exprArrow = (name: string): void => console.log(`Hello, ${name}!`);
?를 사용해 선택적으로 매개변수를 받는 방법function sum(n1: number, n2?: number): number {
return n1 + (n2 || 0);
}
sum(10); // n2는 기본값 0으로 처리
function sum(n1: number, n2: number = 0): number {
return n1 + n2;
}
function sum(...rest: number[]): void {
console.log(rest);
}
sum(1, 2, 3, 4, 5);
function printValue(...rest: [number, string, number, string]): void {
console.log(rest);
}
printValue(1, "a", 2, "b");
const printUser = (callback: (name: string) => void): void => {
callback("John");
};
printUser((name) => {
console.log(name);
});
function compareNumbers(
n1: number,
n2: number,
callback: (result: string) => void
): void {
if (n1 === n2) {
callback("equal");
} else {
callback("not equal");
}
}
compareNumbers(10, 20, (result) => {
console.log(`The numbers are ${result}`);
});
함수의 반환값으로 또 다른 함수를 반환 가능. 이런 패턴은 클로저에서 많이 사용
function createMultiplier(factor: number): (num: number) => number {
return (num) => num * factor;
}
const func = createMultiplier(10);
console.log(func(5)); // 50
never는 절대 반환되지 않는 함수를 나타냄. 예를 들어, 무한 루프나 에러를 던지는 함수에 사용
function errorFunc(message: string): never {
throw new Error(message);
}
출처: 수코딩