제네릭이란 타입을 마치 함수의 특정한 성질을 나타내는 변수를 묶거나 지정하는 방식을 의미합니다.
간단하게 예시를 만들어보면 아래와 같다.
1 2 3 4 5 6 7 8 9
| fuction gen1<T,U>(msg:T,cmt:U):T{ return msg }
gen1<string>("kim");
gen1<string,number>("kim",20)
|
그렇다면 배열과 튜플일 경우에서의 제네릭을 한번 더 정리해보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function gen2<T>(msg:T[]):T{ return msg[0] }
gen2<string>(['kim','jeong'])
function gen3<T,K>(msg:[T,K]):T{ return msg[0] }
gen3(['kim','jeong'])
gen3(['kim',5])
|
제네릭 클래스는 아래와 같은 방식으로 사용합니다
1 2 3 4 5 6 7 8 9 10
| class GenericC<T> { pi: T; sum: (x: T, y: T) => T; }
let math = new GenericMath<number>(); //위와 같은 방식으로 만든다면 개별 sum 함수의 매개변수 지정과 리턴 값이 자 //동적으로 지정되어 편하게 사용가능하게 됩니다.
|
일단 간단한 부분을 점진적으로 연습하면서 새로운 방식을 하나둘씩 익히는 방향으로 진행한다면 좀 더 좋아보인다.