해결된 질문
작성
·
203
1
둘의 차이가 궁금합니다.
clone: <U>(transform: (elem: T) => U) => Cache< ReturnType<typeof transform> >;
clone: (transform: <U>(elem: T) => U) => Cache< ReturnType<typeof transform> >;
왜 명시적으로 제네릭을 지정하면 오류가 날까요
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번째 방법도 가능한 것처럼 보이지만 타입스크립트에서 유효하지 않은 문법입니다. 왜? 라고 물어보시면 저도 할 말이 없지만 아마 언어를 설계하신 분이 첫번째 방법으로도 가능하기 때문에 두번째 방법이 가능하도록 따로 구현하지 않은 것 같습니다.