Generic 공부 및 예시
// 함수
function f(x:string){
return `(${x})`;
}
// 함수 활용
const y = f("1");
// 제너릭이 있는 타입 정의
type F<X extends string> = `(${X})`;
// 예시
type Y = F<`010-${number}-${number}`>;
// 예시 활용
let asf:Y = "(010-1234-5678)";
// 배열 제너릭 정의
type Arrays<T extends number | string>= Array<T>;
// 일부분 빼고 정의
type NonnumericArray<T> = T extends number
? never
: T[]
;
// 예시 활용
let temp:Arrays<number> = [6,4,5];
//예시 활용2
let temp2:Arrays<string> = ["2","3"];
// 예시 활용 잘못된 예시
let temp3:Arrays<Date> = ["1","3"];
// 예시 활용
let temp4:NonnumericArray<number> = [ 1, 2 ];
let temp5:NonnumericArray<string> = [ "1", "2" ];
Generic 딸린 타입을 export 해서 가져올 수 있음
BUT Generic 만 따로 가져 올 수 없음
Extends 란 ? 타입을 한정 시키기 위한 수단
// Extends 없이 모든걸 받기 위한 예시 with 매개변수 value
const log = <T,>(value : T)=>{
return value;
}
// Extends 사용해서 모든 걸 받기위한 예시 with 매개변수 value
const log2 = <T extends {}>(value: T) =>{
return value;
}