Typescript Generic
- 제네릭(Generic)은 타입을 함수의 파라미터처럼 사용하는 것들 의미한다.
- 정적 type 언어는 클래스나 함수를 정의할 때 type을 선언해야 한다.
- 제네릭은 코드가 수행될 때 타입을 명시한다.
- 코드를 작성할 때 식별자를 써서 아직 정해지지 않은 타입을 표시한다.
- 일반적으로 식별자는 T,U,V ...를 사용한다.
Typescript Generic 예시
일반 함수의 경우 아래 코드처럼 aaa라는 파라미터에 어떤 값이 들어가더라도 그대로 반환한다.
function qqq(aaa) {
return aaa;
}
qqq("멍멍"); // "멍멍"
qqq(7); // 7
qqq(true); // true
아래 코드는 제네릭 기본 문법이 적용된 형태이다. 그리고 함수를 호출할 때 아래와 같이 함수 안에서 사용할 타입을 넘겨줄 수 있다. 그리고 `qqq("멍멍")`을 예로 들어보자면 string 타입이 전부 제네릭 값으로 넘어간다. 즉 T들이 전부 string이 된다.
function qqq<T>(aaa: T): T {
return aaa;
}
qqq<string>("멍멍"); // "멍멍"
qqq<number>(7); // 7
qqq<boolean>(true); // true
제네릭을 사용하는 이유
- 한 가지 타입보다 여러 가지 타입에서 동작하는 컴포넌트를 생성하는데 사용된다.
- 재사용성이 높은 함수와 클래스를 생성할 수 있다.
- 오류를 쉽게 포착할 수 있다.(any타입은 컴파일 시 타입을 체크하지 않는다.)
- 제네릭도 any처럼 타입을 지정하지 않지만, 타입을 체크해 컴파일러가 오류를 찾을 수 있다.
참고한 사이트 :
https://joshua1988.github.io/ts/guide/generics.html#%EC%A0%9C%EB%84%A4%EB%A6%AD-generics-%EC%9D%98-%EC%82%AC%EC%A0%84%EC%A0%81-%EC%A0%95%EC%9D%98
https://lakelouise.tistory.com/188