제네릭
#
간략히- C# 이나 Java와 같이, 재사용가능한 컴포넌트를 만드는 기능을 제네릭이라 합니다. java에서 클래스 내부에서 사용할 데이터 타입을 외부에서 지정했던 것처럼 비슷하게 typescript에서 함수나 클래스에 제네릭이 쓰입니다.
- any와는 다르게 type 정보를 잃지 않습니다.
- 타입 추론이 작용한 예
- 배열의 경우
#
제네릭 함수와 인터페이스- 제네릭이 아닌 함수의 선언과 비슷합니다.
- 타입지정 할 때에 필요에 따라 다른 이름의 제네릭 타입을 주기도 합니다.
- 리터럴 타입도 가능합니다.
- 이는 인터페이스로 만들 수 있다는 말과 같습니다.
#
제네릭 클래스- number뿐 아니라 다른 것도 사용 가능합니다.
- instance side 에서만 사용 가능합니다. (not for static side)
#
제네릭 제약- interface로 제네릭을 제약할 수 있습니다. (extends)
- 예시에서는 Array로 지정을 안해주더라도 프로퍼티로
length
를 포함하고 있는 객체라면loggingIdentity
함수에 접근할 수 있도록 해주었습니다.
- 다른 제네릭 파라미터로 제약할 수도 있습니다.
#
클래스 타입을 사용한 제네릭- 팩토리를 만들 때
- constructor 함수와 instance side 관계를 제약할 때