와 제네릭 설명 듣고 정말 대박이다를 외쳤음
책으로 읽을때 제네릭 부분을 제대로 이해하질 못했다. (졸려서? ㅎㅎ)
'도대체 왜 쓰는거지? 인자에 타입을 지정해주는건 알겠고, 반환값에도 타입을 지정해주는 자리가 어디인진 알겠는데, 도대체 제네릭은 뭐지? 기호도 처음보고, 위치도.. 왜 ..'
납득이 잘 안갔다.. 다른분들 코드를 볼때도 <T>가 있으면 너무 헷갈렸는데
function hello<T>(name: T): T {
return name
}
function helloV2<Type>(name: Type): Type {
return name
}
도대체 T 는 뭘까 왜 저 위치에 있는거지?
(위의 예시에서 T와 Type는 하는 역할이 완전히 동일하다.)
너무 헷갈렸다.
(이해하고 나니까, 저 예제는 인자와 반환 타입에서 사용되어서 나름대로 자연스러워 보인다.)
<T>가 함수 내부에서 사용될 때 특히 코드리뷰를 했을 때 보았던 모듈화된 코드가 어렵게 느껴졌었다. 모듈화되어 코드가 따로 떨어져있고 코드 내부에 사용될 때가 특히 어려웠다.
그런데! 설명을 듣고나니, 너무 대박이잖아?! 완벽한 추상화야
일단, T는 그냥 문자다. 변수 같은 것이어서 이름은 마음대로 정하면 된다. 단지 T를 사용하기로 했다면 타입이 T인 곳엔 항상 T를 적어야 한다(Type 로 적어주면 안됨. A라고 적어도 되고 .. ). 변수처럼.
결론은, 함수를 호출할 때 <T>자리에 <string>하게 되면 함수 내부, 또는 인자 등에 T가 있는 곳의 타입은 string가 되는 것
hello<string>('hello-kk');
https://www.typescriptlang.org/ko/docs/handbook/2/generics.html
'Front-End > TypeScript' 카테고리의 다른 글
타입스크립트 기본 내용과 헷갈리는 부분 정리 (0) | 2023.03.28 |
---|---|
event Type (0) | 2023.03.15 |
TypeScript 제네릭 (0) | 2023.02.23 |
(책) 알아서 잘 딱 깔끔하고 센스있게 정리하는 TypeScript 핵심 개념 (0) | 2023.01.19 |