404 page not found : 기록장

[Typescript] Generic 본문

TYPESCRIPT

[Typescript] Generic

Hannah_J 2023. 3. 3. 18:57

Generic은 타입을 불문하고 동작하는 것을 말한다. 즉, 함수에 인수를 넘길 때 타입 인수도 넘기기 때문에 타입에 관한 어떠한 정보도 잃지 않는다. any를 쓰는 것과는 다르다. any를 쓰게 되면 만약 number type을 넘기더라도 any type이 반환된다는 정보만 얻을 뿐이다.

하지만 generic을 사용하게 되면 number type을 넘기면 number type이 string type을 넘기면 string type 을 반환해준다.

 

// 4. 모두(generic)

function getGeneric<MyType>(arg: MyType): MyType {
    return arg
}

const result41 = getGeneric(8);
const result42 = getGeneric("안녕하세요");
const result43 = getGeneric(true);

//
//
//
// 5. 모두(any) - 응용

// "철수", "다람쥐초등학교", 8
// [8, "다람쥐초등학교", "철수"]

function getReverse(arg1 : any, arg2 : any, arg3 : any) : any[]{
    return [arg3, arg2, arg1]
}

const result51 = getReverse("철수", "다람쥐초등학교", 8)
const result52 = getReverse(1000, "영희", "토끼초등학교")
const result53 = getReverse(100, 200, "토끼초등학교")

//
//
//
// 6. 모두 (generic) - 응용

//prettier-ignore

function getReverseType<MyType1, MyType2, MyType3>(arg1: MyType1, arg2: MyType2, arg3: MyType3): [MyType3, MyType2, MyType1]{
    return [arg3, arg2, arg1]
}

const result61 = getReverseType("철수", "다람쥐초등학교", 8)
const result62 = getReverseType(13 , "영희", "토끼초등학교")
const result63 = getReverseType(100 , 200, "토끼초등학교")

//
//
//
// 7. 모두 (generic) - 축약

//prettier-ignore

function getReverseT<T1, T2, T3>(arg1: T1, arg2: T2, arg3: T3): [T3, T2, T1]{
    return [arg3, arg2, arg1]
}

const result71 = getReverseT("철수", "다람쥐초등학교", 8)
const result72 = getReverseT(13 , "영희", "토끼초등학교")
const result73 = getReverseT(100 , 200, "토끼초등학교")


//
//
//
// 8. 모두 (generic) - 축약

//prettier-ignore

function getReverseTUV<T, U, V>(arg1: T, arg2: U, arg3: V): [V, U, T]{
    return [arg3, arg2, arg1]
}

const result81 = getReverseTUV("철수", "다람쥐초등학교", 8)
const result82 = getReverseTUV(13 , "영희", "토끼초등학교")
const result83 = getReverseTUV(100 , 200, "토끼초등학교")

 

'TYPESCRIPT' 카테고리의 다른 글

[Typescript] Typescript 함수  (0) 2023.03.08
[Typescript] Any와 Unknown  (0) 2023.03.03
[Typescript] Union Type, Intersection Type  (0) 2023.03.03
[Typescript] type vs interface 차이  (0) 2023.03.03
[Typescript] Typescript의 기본 Type  (0) 2023.03.03