지난주에 To-do list 를 TS로 리팩토링 하는 과제를 진행하며 TypeScript 가 생각보다 어렵고, 공부할 양이 많은 것 같다고 느꼈다. 오늘 과제를 제출하고 팀원들과 이야기를 나눠보니 다들 같은 걸 느꼈다고 해서 이번 한 주 동안 TS 스터디를 진행해보기로 했다.
스터디는 정말 처음에 시작하는게 어렵다.
위와 같은 조건을 모두 고려해서 이야기 나눠보고 튜터님에게도 찾아가서 이야기 해 본 결과,
이렇게 스터디 교재를 정하고, 오늘은 1 - 6번 문제를 풀어보기로 했다. 각 문제의 구성에 대한 예시는 아래와 같다.
아까 말했듯 오늘은 6번까지 풀었는데 6번에서 난이도가 확 올랐다. 갑자기 function overload
가 나와서 놀랐다. 그래서 도큐먼트를 읽어봤는데, function signature
와 implementation signature
라는 개념이 나와서 당황했다. 여기저기서 많이 등장하는 것 같은데, 헷갈리지 않기 위해서 정리해보려 한다.
오버로드 시그니처는 함수의 타입을 정의하는데 사용된다. 다시 말해 함수가 어떤 매개변수를 받고 어떤 타입의 값을 반환하는지 명시적으로 선언하는 부분이다. 이 때 실제 구현 부분은 작성하지 않는다.
function isDivisor(param1: number, param2: number):boolean;
구현 시그니처는 함수의 선언부에 실제 구현부까지 함께 정의해둔 형태를 말한다.
function isDivisor(param1: number, param2: number):boolean {
return param1 % param2 === 0 ? true : false;
}
TS 를 공부하다 보니 이런저런 시그니처를 많이 보게 된다. 위의 두개 외에도 호출 시그니처, 함수 시그니처 등등 ... 모든 시그니처를 다 외우기는 어려울뿐더러 그럴 필요도 없고, 시그니처 라는게 형태에 의해서 주로 결정된다는 것만 알아두고 그 때 그때 찾아가며 사용하면 될 것 같다.