const getPrimitive = (arg1: string, arg2: number, arg3: boolean): [boolean, number, string] => {
return [arg3, arg2, arg1];
};
const result= getPrimitive('hyojin', 27, true);
const getAny = (arg1: any, arg2: any, arg3: any): [any, any, any] => {
return [arg3, arg2, arg1]; // any는 아무 타입이나 다 들어갈 수 있음
};
const result = getAny('hyojin', 27, true);
const getUnknown = (arg1: unknown, arg2: unknown, arg3: unknown): [unknown, unknown, unknown] => {
if (typeof arg1 === 'number') console.log(arg1 + 100);
return [arg3, arg2, arg1];
};
const result = getUnknown('hyojin', 27, true);
4-1. generic 타입 -> any, unknown보다 더 안전한 버전으로 한번 특정 타입으로 사용하고 나면 이후부터 해당 타입으로 값을 넣어야함.
아래 코드에서 개발자가 generic타입으로 함수를 생성할 때 Type1,2,3 은 임의로 만든 타입의 값이고 어떤 이름이든 개발자가 지정하기 나름!
이후 사용자가 Type1에 number 타입을 사용했다면 이후 Type1은 number 타입만 들어갈 수 있음 -> 보통 generic 타입은 사용자가 지정하기 보다 프레임워크 등을 만든 사람이 해당 프레임워크를 만들때 사용함 -> 그리고 사용자가 본인 니즈에 맞게 타입을 지정해서 사용하게됨.
function getGeneric<Type3, Type2, Type1>(arg1: Type1, arg2: Type2, arg3: Type3): [Type3, Type2, Type1] {
return [arg3, arg2, arg1];
}
const result = getGeneric('kitty', 27, true);
// generic 생성 이후 특정 데이터타입을 지정해서 호출하고 싶은 경우 아래와 같이 사용
// const result = getGeneric<string, number, boolean>('hyojin', 27, true);
4-2. generic 타입 -> 화살표함수 버전
const getGeneric = <Type3, Type2, Type1>(arg1: Type1, arg2: Type2, arg3: Type3): [Type3, Type2, Type1] => {
return [arg3, arg2, arg1];
};
const result = getGeneric('hyojin', 27, true);