• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

cache 강의 질문

24.02.04 18:58 작성 조회수 81

1

  1. 둘의 차이가 궁금합니다.

clone: <U>(transform: (elem: T) => U) => Cache< ReturnType<typeof transform> >;

clone: (transform: <U>(elem: T) => U) => Cache< ReturnType<typeof transform> >;
  1. 왜 명시적으로 제네릭을 지정하면 오류가 날까요

const stringCache = numberCache.clone(<string>(elem) => {
    return String(elem);
  });

답변 1

답변을 작성해보세요.

0

안녕하세요

1번하고 2번 질문이 연관된 것 같은데 합쳐서 답변드리겠습니다.

clone: <U>(transform: (elem: T) => U) => Cache< ReturnType<typeof transform> >;
clone: (transform: <U>(elem: T) => U) => Cache< ReturnType<typeof transform> >;

위의 clone과 아래의 clone의 차이는 제네릭을 위한 타입 변수를 선언을 clone함수에 할 것이냐 아니면 transform이라는 함수 인자에 해줄 것이냐의 차이인데요.

논리적으로는 2번째 방법도 가능한 것처럼 보이지만 타입스크립트에서 유효하지 않은 문법입니다. 왜? 라고 물어보시면 저도 할 말이 없지만 아마 언어를 설계하신 분이 첫번째 방법으로도 가능하기 때문에 두번째 방법이 가능하도록 따로 구현하지 않은 것 같습니다.