타입 별칭으로 a는 무조건 number입니다.
b는 number인지 string인지 확인이 필요합니다.
a + b를 할때 number + string이면 더하기가 불가능합니다.
이럴 때 typeof b === "string"인지 확인을 해야합니다.
고 수락하면 return a를 가져옵니다.
next.js에서는 많이 이렇게 사용한다고 합니다.
일단 받아적긴 했습니다만... 설명해보자면
string이나 config타입을 가지고 있다면 내부에서 타입을 체크하게 해줍니다.
string인지 number인지 boolean인지 확인을 합니다.
config가 string이라는 게 확인이 되면 console.log(config)가 출력이 되고
그렇지 않은 경우 console.log(config.path)로 출력이 됩니다.
a는 number b도 number입니다.
c도 number입니다. 근데 c는 타입 별칭에서 추가된 파라미터이기 때문에 옵션으로 칩니다.
그래서 c는 number일수도 있기 때문에 const로 정의할 때
c는 추가적으로 타입을 줘야 하고 c는 선택사항이라는 걸 알려줍니다.
사실 이런 경우는 정말 보기 힘든 경우입니다만 call signature 파라미터 갯수가 다른 경우
마지막 추가 파라미터 (a : number, b : number, c : number) 선택, 옵션사항입니다.
보통은 string을 보내거나 Config로 객체를 보내는 경우가 많습니다.
add(1, 2)를 호출하거나
add (1, 2, 3)을 호출하면 작동이 됩니다.