Typescript - Narrowing

Narrowing

padLeft라는 함수가 있다고 생각해보자.

function padLeft(padding: number | string, input: string) {
  if (typeof padding === "number") {
    return " ".repeat(padding) + input;
  }
  return padding + input;
}

만약 위 함수에서 paddingnumber라면, input 앞에 padding 횟수만큼 공백이 띄워지지만, paddingstring이라면, input 앞에 padding이 붙여져야한다.

그렇게 되면, 타입스크립트에서는 paddingnumberstring을 받을 때 우리가 padding이라는 값을 numberstring으로 Narrowing해줘야한다.