[TypeScript] 함수 타입

🛠 타입스크립트에서 함수 타입

타입스크립트에서는 함수의 타입을 정의할 수 있다. 함수 타입은 매개변수의 타입반환값의 타입을 명시한다.

(매개변수1: 타입1, 매개변수2: 타입2, ...) => 반환값 타입

예를 들어, 두 개의 숫자를 받아서 그 합을 반환하는 함수의 타입을 정의하면 다음과 같다

(a: number, b: number) => number;

✍️ 함수의 매개변수에 타입 지정하기

함수의 매개변수에 타입을 지정하여 해당 타입의 값만 전달될 수 있도록 제한할 수 있다. 매개변수 이름 뒤에 콜론(:)과 함께 타입을 명시한다.

function greet(name: string) {
  console.log(`Hello, ${name}!`);
}

greet("Chaeng"); // Hello, Chaeng!
greet(123); // 에러: 'number' 타입의 인수는 'string' 타입의 매개변수에 할당될 수 없다.

🔙 함수의 반환값에 타입 지정하기

함수의 반환값에 타입을 지정하여 해당 타입의 값만 반환되도록 할 수 있다. 함수 선언의 매개변수 목록 뒤에 콜론(:)과 함께 반환값의 타입을 명시한다.

function add(a: number, b: number): number {
  return a + b;
}

const result = add(3, 4); // result의 타입은 number

🎯 선택적 매개변수와 기본 매개변수

❓ 선택적 매개변수 (옵셔널 파라미터)

함수의 매개변수를 선택적으로 받을 수 있도록 옵셔널 파라미터를 사용할 수 있다. 옵셔널 파라미터는 매개변수 이름 뒤에 물음표(?)를 붙여 표시한다.

⚙️ 기본 매개변수

타입스크립트에서는 함수의 매개변수에 기본값을 지정할 수 있다. 이를 통해 인자가 전달되지 않았을 때 사용할 기본값을 설정할 수 있다.

function greet(name: string, age?: number, country: string = "Korea") {
  if (age) {
    console.log(
      `Hello, ${name}! You are ${age} years old. You are from ${country}.`
    );
  } else {
    console.log(`Hello, ${name}! You are from ${country}.`);
  }
}

greet("Chaeng"); // Hello, Chaeng! You are from Korea.
greet("Bob", 25, "Canada"); // Hello, Bob! You are 25 years old. You are from Canada.

➕ 나머지 매개변수 사용하기

타입스크립트에서는 함수의 매개변수로 임의의 개수의 인수를 받을 수 있는 나머지 매개변수를 지원한다. 나머지 매개변수는 매개변수 이름 앞에 점 세 개(…)를 붙여 표시한다.

function sum(...numbers: number[]): number {
  return numbers.reduce((acc, curr) => acc + curr, 0);
}

console.log(sum(1, 2, 3)); // 6
console.log(sum(4, 5, 6, 7)); // 22

나머지 매개변수는 배열 형태로 전달되며, 함수 내부에서 배열로 사용할 수 있다.


🔄 함수 타입과 콜백

콜백 함수는 다른 함수에 인자로 전달되는 함수이다. 타입스크립트에서는 콜백 함수의 타입도 명시적으로 지정할 수 있다.

function doSomething(callback: (result: number) => void) {
  const result = 42;
  callback(result);
}

doSomething((num) => {
  console.log(`The result is ${num}`);
});

🏹 화살표 함수와 함수 타입

화살표 함수(Arrow Function)는 함수를 더 간결하게 작성할 수 있는 방법을 제공한다. 화살표 함수는 => 기호를 사용하여 정의한다. 화살표 함수의 타입도 일반 함수와 동일한 방식으로 정의할 수 있다.

const add = (a: number, b: number): number => {
  return a + b;
};

const multiply = (a: number, b: number): number => a * b;

console.log(add(3, 4)); // 7
console.log(multiply(3, 4)); // 12

위의 예시에서 add 함수중괄호({})를 사용하여 함수 본문을 정의하고 return 키워드를 사용하여 값을 반환한다. 반면, multiply 함수return 키워드를 생략하고 함수 본문을 간략하게 작성하였다.

Categories:

Updated:

Leave a comment