[TypeScript] Call Signatures / Over Loading / Generics

2024. 11. 30. 22:30·TypeScript

Call Signatures


이름 위에 커서를 올렸을 때 뜨는 매개변수 타입 정보와 리턴 타입 정보

const add = (a:number,b:number) => a+b;
===> 분리

type Add = (a:number,b:number) => number;  //Call Signatures
const add:Add = (a,b) => a+b;  // 타입 별칭 사용

 

Over Loading


하나의 함수가 복수의 Call Signature를 가질 때 발생

- 매개변수의 데이터 타입이 다른 경우

type Add = {
	(a: number, b: number): number,
	(a: number, b: string): number
}

const add: Add = (a, b) => {
	if(typeof b === "string") return a;
	return a + b;
}

 

- 매개변수의 수가 다른 경우

type Add2 = {
	(a: number, b: number): number,
	(a: number, b: number, c: number): number
}

const add2: Add2 = (a, b, c?: number) => {
	if (c) return a + b + c;
	return a + b;
}

 

 


Generics(제네릭)


:타입을 함수의 파라미터처럼 사용하는 것

선언시점이 아닌 생성 시점에 타입을 명시해 하나의 타입만이 아닌 다양한 타입을 사용할 수 있도록 하는 기법으로

함수의 타입을 유연하고 재사용 가능하게 설계함

 

function getPrint<T>(text: T): T {
  return text;
}

//함수 호출시 사용할 타입 넘김
getPrint<string>('hi'); 
getPrint<number>(10);
getPrint<boolean>(true);

 

type ArrPrint = {
	<T>(arr:T[]):void
}

const arrPrint:ArrPrint = (arr)=>{
	arr.forEach(i => console.log(i))
}

//타입유추해서Call Signatures 보여줌
arrPrint([1,2,3]) //<number>(arr: number[]) => void
arrPrint([true,false]) //<boolean>(arr: boolean[]) => void
type GetPrint = { <T,M>(a: T[],b:W): void }
type Player<T> = {
	name: string,
	extraInfo: T
};

const aaa: Player<{favFood:string}> = { //T에 대한 구체적인 타입을 제공
	name: "aaa",
	extraInfo: {
		favFood: "egg"
	}
}
const bbb: Plater<null> = {
	name: "bbb",
	extraInfo: null
}

 

'TypeScript' 카테고리의 다른 글

[TypeScript] Enums(열거형)  (0) 2024.12.23
[TypeScript] Class / Interface  (0) 2024.11.30
[TypeScript] 기본타입  (0) 2024.11.29
[TypeScript] 타입 선언/ 별칭/ 옵션  (0) 2024.11.28
[TypeScript] 설치 및 환경 구축  (0) 2024.11.27
'TypeScript' 카테고리의 다른 글
  • [TypeScript] Enums(열거형)
  • [TypeScript] Class / Interface
  • [TypeScript] 기본타입
  • [TypeScript] 타입 선언/ 별칭/ 옵션
Naah
Naah
  • Naah
    blueprint
    Naah
  • 전체
    오늘
    어제
    • 분류 전체보기 (106)
      • Java (28)
      • Kotlin (0)
      • TypeScript (7)
      • React (22)
      • Next.js (1)
      • Spring (22)
      • JPA (12)
      • Spring Data JPA (6)
      • Querydsl (1)
      • Error (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • manage
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Naah
[TypeScript] Call Signatures / Over Loading / Generics
상단으로

티스토리툴바