“Connecting the dots”

Typescript Generic 본문

레벨업

Typescript Generic

kims1997 2022. 12. 23. 09:35
반응형

Typescript Generic


Typescript Generic이란?

 

제네릭은 어떠한클래스 혹은 함수에서 사용할 타입을 그 함수나 클래스를 사용할 때 결정하는 프로그래밍 기법이다 

java c++ 등의 정적 타입 언어에서는 함수 및 클래스를 선언하는 시점에서 매개변수 혹은 리턴 타입을 정의해야한다 기본적으로 특정 타입을 위해 만들어진 클래스나 함수를 다른 타입을 위해 재사용이 불가능하다

 

정적 타입 언어에서도 특정 타입을 위해 만들어진 함수 혹은 클래스 보다 범용적으로 재사용하기 위한 요구 제네릭 이라는 프로그래밍 기법이 생겼다 TypeSctipt  도 정적타입언어이기떄문에 기본적으로 타입을 정의한 함수 혹은 클래스는 모두 다른 타입에 재사용할수 없다 

 


제네릭 사용이유


제네릭을 유용하게 사용할 수 있는 경우로는 자료구조 이다  여러가지 방법으로 구현할수 있지만 스택같은 자료구조는 대개 범용적인 타입을 수용할 수 있도록 만들어졌다 Typescript에서는 위와 같이 any를 이용하여 구현하는 방법중 쉬운방법이다 

any를 이용해서 구현하면 저장하고 자료의 타입이 모두 같이 않다는 문제점이 생긴다 그렇다고 자료형을 보장하기 위해서 항ㅇ상 number 타입의 변수만 받을 수 있도록 해서 범용성이 떨어진다

 


제네릭의 문법


  • 클래스:클래스 식별자 선언부에 <T>라는 못보던 문법이 추가된 것을 확인할 수 있다. 제네릭을 사용하겠다는 의미로 꺽쇠(Angle brackets)를 넣고 그 안에 타입으로 사용되는 식별자를 집어넣는다.

 

  • 함수: 클래스와 동일하게 함수 식별자 옆에 들어가는 <T>이다. 마찬가지로 이 함수 내에서 T는 특정한 타입으로 취급된다.마찬가지로 사용할 때는 함수를 호출할 때 제네릭 문법으로 타입을 정해주기만 하면 된다

 

  • 두 개 이상의 타입 변수 :제네릭을 사용하면 위와 같은 형태로 구현할 수 있다. 꺽쇠 안에 T U 두 가지의 타입 변수가 보일 것이다. 아까 관용적으로 T를 사용한다고 말했는데, 그 뒤로는 알파벳 순서대로 사용하면 된다. 반복문에서 관용적으로 인덱스 변수로 i, j를 사용하는 것과 비슷하다.

 

  • 상속된 타입 변수 :타입 변수는 기존에 사용하고 있는 타입을 상속할 수도 있다. 이 점을 이용하면 입력 받을 변수의 타입을 제한할 수 있다. 또한 에디터가 해당 타입의 메소드나 프로퍼티를 예측할 수 있으므로 자동 완성이 된다.
반응형

'레벨업' 카테고리의 다른 글

ACID  (0) 2022.12.23
집계, 정렬, 서브 쿼리  (0) 2022.12.23
Jest  (0) 2022.12.22
Eslint & Prettier  (0) 2022.12.22
Database Tool(GUI)  (0) 2022.12.22