4-1. Describing Types in Functions

함수에 타입 정의하기 (매개변수parameter와 리턴 값의 타입 정의)

/** Describing Types of Functions */
function func(a: number, b: number) {
  return a + b;
}

/** Using Arrow Functions */
const add = (a: number, b: number) => a + b;

/** Using Default Values */
const subtract = (a = 2, b = 1) => a - b;

Optional Parameter 선택적 매개변수

/** Optional Parameter */
function print(a: number, **b?: number**) { // type of b is number | undefined
  console.log(a);
  if (typeof b === "number") {
    console.log(b);
  }
}

Using spread operator (with array & tuple)

/** Spread Operator */
function getSum(...nums: number[]) {
  let sum = 0;
  nums.forEach((i) => (sum += i));
  return sum;
}

function getSumOfThree(...nums: [number, number, number]) {
  let sum = 0;
  nums.forEach((i) => (sum += i));
  return sum;
}

console.log(getSum(1, 2, 3, 4, 5)); // not getSum([1, 2, 3, 4, 5])
console.log(getSumOfThree(1, 2, 3)); // error if (1, 2, 3, 4)

4-2. 함수 타입 표현식과 호출 시그니쳐

Documentation - More on Functions

함수 타입 표현식 Function Type Expressions