<aside> 💡 목차

</aside>

1. 제네릭 정의

2. 제네릭의 필요성

컴파일(Compile)

런타임(Runtime)

3. 제네릭 기본 문법

function generic<T>(arg: T): T {
  // T(Type)는 타입 변수 (단일 타입 변수)
  // : 해당 타입 변수는 입력 인수의 타입을 T로 지정
  // , 함수의 반환 타입을 T로 지정
  return arg;
}

let stringOutput = generic<string>('안녕하세요');
// let stringOutput = generic('안녕하세요'); // <string>은 생략 가능

let stringOutput2 = generic<string>(500); // Error
// 'number' 형식의 인수는 'string' 형식의 매개 변수에 할당될 수 없습니다.

let numberOutput = generic<number>(500);
// let numberOutput = generic<number>(500); // <number>는 생략 가능

let numberOutput2 = generic<number>('반갑습니다'); // Error
// 'string' 형식의 인수는 'number' 형식의 매개 변수에 할당될 수 없습니다.

console.log(stringOutput); // 안녕하세요
console.log(numberOutput); // 500