본문 바로가기

타입스크립트 TypeScirpt

4. Typescript Polymorphism(다형성), generic(제네릭) - 노마드코더 강의정리

728x90
아래 포스팅은 노마드코더의 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 함수나 문법이 익숙치 않아서 헤매는게 큰데 익숙해지도록 챌린지도 완수해봐야지!

 

끝. 

 

 

 

 

 

 

 

 

728x90