typescript generic 1

제네릭이란 타입을 마치 함수의 특정한 성질을 나타내는 변수를 묶거나 지정하는 방식을 의미합니다.

간단하게 예시를 만들어보면 아래와 같다.

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'])
//kim 이 표시됨

function gen3<T,K>(msg:[T,K]):T{
return msg[0]
}

gen3(['kim','jeong'])
//kim 이 표시됨(위와 다르지 않음)
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 함수의 매개변수 지정과 리턴 값이 자
//동적으로 지정되어 편하게 사용가능하게 됩니다.


일단 간단한 부분을 점진적으로 연습하면서 새로운 방식을 하나둘씩 익히는 방향으로 진행한다면 좀 더 좋아보인다.