Type Alias와 Interface를 비교하다가,
기본 개념도 잘 안 잡혀있는데 혼란만 가중시키고 있는 것 같아
우선 강의를 듣기로 한다!
https://www.typescriptlang.org/docs/handbook/generics.html
재사용 가능한 컴포넌트를 만드는 것은 중요하다. 그리고 C#와 Java 같은 언어들에서, 재사용 가능한 컴포넌트를 만드는 가장 큰 도구는 제네릭으로, 다양한 타입들과 사용자 고유의 타입에 이를 쓸 수 있다.
제네릭 없이 특정 타입으로 함수 선언
function identity(arg: number): number {
return arg;
}
제네릭 없이 any 타입으로 함수 선언
function identity(arg: any): any {
return arg;
}
any 타입을 사용하면 인자로 모든 타입을 받게 되면서, 함수 리턴 시에 타입에 대한 정보를 잃는 셈이다.
리턴값을 보여주는 방식으로 함수 선언
function identity<T>(arg: T): T {
return arg;
}
함수를 정의하기 위해 Type 변수 T를 추가했고, T는 사용자가 제공하는 타입(예를 들면 number)을 붙잡아 그 정보를 나중에 사용할 수 있게 한다.
➡️ Type : 타입들을 위한 특별한 변수
➡️ 이런 아이덴티티 함수를 제네릭이라고 한다.
any와는 다르게, 여러 타입들에 적용될 수 있다.