ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TypeScript 함수 4 (Generic Recap)
    카테고리 없음 2022. 6. 12. 19:00

    ts는 코드를 보고 type을 유추해내고, placeholder를 작성한 코드에서 발견하는 타입으로 대체한다.

    1. T라는 제네릭을 사용할 것 이라고 ts에게 알려준다.

    2. T는 배열에서 오고, 함수의 첫번째 파라미터에서 올 것이라고 ts에 알려준다.

    3. ts는 이것을 기반으로 함수 실행시 실제 대입된 배열을 살펴보고 type이 number라는 것을 알게된다.

    4. ts는 T를 number 타입으로 대체한다.

    5. T는 call signature를 요구하는 대로 생성한다.

     

    제네릭이 any와 다른 이유

    배열의 type과 함수의 반환 type을 any로 설정하면 superPrint로 구체화되어 정의된 함수의 return 값도 any가 되므로

    더 이상 type의 보호를 받을 수 없다 

     

    제네릭 T를 사용하면  superPrint 사용시 type이 number로 추측 되어 const a는 number type이 된다. 

     

    제네릭은 요구한 대로  signature를 생성해 줄 수 있는 도구이다. 작성해야할 call signature를 생각하기전에 제네릭을 사용하면 요청으로 call signature를 생성할 수 있다는 것을 기억하자.

     

    제네릭 하나더 추가하기

    ts는 제네릭이 처음 사용되는 지점을 기반으로 이 타입이 무엇인지 알게 된다. 예를 들어, superPrint를 실행하는 코드에 error가 나고 있는 것을 알 수 있다. 왜냐하면 call signature를 통해 두개의 arfuemnts를 예상하고 있었기 때문이다.

     

     ts는 이제 두번째 argument가 함수에서 제네릭으로 되어 있다는 것을 알게된다. 또한 ts는 제네릭을 처음 인식(두번째 인자인 "x"를 넣어 줌으로 써 ts는 두번째 제네릭을 처음 인식했다는 것을 의미)했을 때와 제네릭의 순서를 기반으로 제네릭의 type을 알게된다.

     

    그리고 여기서 다시 요구에 따라 call signature를 생성한다.

     

    [출처 - https://nomadcoders.co/typescript-for-beginners/lectures/3677 ]

    댓글

Designed by Tistory.