아래 포스팅은 노마드코더의 Typescript 강의 내용을 제가 나중에 찾아볼 때를 대비해 정리한 내용입니다.
오늘 포스팅은 강의 #3.2 정리내용(다형성, 제네릭!)
ㅇ 강의 원본 링크 - https://nomadcoders.co/typescript-for-beginners/lectures/3675
#3.2 Polymorphism
의미 : polygon(다각형) 같은 단어 , poly(여러) gon(각) + morphos(구조)
타입스크립트에서 함수는 string이나 object를 첫번째 파라미터로 가질 수 있음
배열을 받고, 그 배열의 요소(타입 무관)를 하나씩 print 해주는 함수를 실습하면서 다형성과 제네릭에 대해 알아본다.
concrete type : 우리가 전부터 봐왔던 정해진 타입. number, booleans, string, void, unknown...등.
어떤 타입의 데이터든 타입이 정해져있지 않은걸 받으려면 "generic 타입"으로 선언
generic : 타입의 placeholder 같은 것. concrete type 대신 사용 가능
이렇게 모든 가능성을 다 조합해서 만들려면
type 정의할 때, (arr: (number|boolean)[]):void 를 추가하면 되긴하나, 비효율적임
=> generic 이용! (call signature를 작성할 때, argument의 정확한 타입을 모를때 사용)
generic을 이용하겠다는 선언을 해야함
위의 'TypePlaceholder'는 어떤 단어든 상관없음. generic으로 이용할 변수명일뿐
타입스크립트는 이 라인에서 superPrint가 number 타입 배열로 동작한다는걸 확인 가능함.
< generic의 핵심! >
Placeholder로 정의된 superPrint 함수가 number 타입 배열을 인자로 넘긴 이후,
number 타입의 데이터임을 확인하게 됨(정해져 있지 않은 타입-TypePlaceholder가 함수 실행된 이후 타입이 확정됨)
"hello"라는 string type의 데이터를 추가하더라도 |string 의 양식이 자동으로 추가된다.
이게 바로 제네릭을 사용할 수 있는 방법 중 하나 ! 엄청난 거다.
typescript 함수나 문법이 익숙치 않아서 헤매는게 큰데 익숙해지도록 챌린지도 완수해봐야지!
끝.