ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 타입스크립트 - 호출 시그니처, 제네릭
    Typescript 2021. 2. 17. 21:12

    여기 두 개의 number를 인수로 받아 한 개의 number를 반환하는 함수 sum이 있다. 

    function sum(a: number, b: number): number {
      return a + b
    }

    함수의 타입을 표현하는 방법, '호출 시그니처(Call signature)'

    (a: number, b: number) => number

     

    호출 시그니처는 타입스크립트에서 함수의 타입을 지정할 때 사용하는 문법이다. 함수에 함수를 인수로 전달하거나, 함수를 반환하는 경우 이 문법을 통해 인수나 반환 함수의 타입을 지정할 수 있다.

    type LogFn = (text:string) => void // 호출 시그니처를 통해 LogFn 함수 타입 지정
    let log: LogFn = (text) => console.log(text) // 함수 log를 선언하며 LogFn 타입임을 명시

     

    제네릭, 선언 시점이 아닌 생성 시점에 타입을 명시하여 여러 타입을 사용할 수 있도록 하는 기법. 한번 선언해두면 다양한 타입에 재사용할 수 있다.

    function getData<T>(data: T[]): T[] {
      return data
    }
    
    getData<string>(['hi','hello'])
    getData<number>([10, 9, 8, 7])
    getData<boolean>([true, false, true])

    함수 getData의 이름 바로 뒤에 추가한 <T>가 바로 제네릭이다. 인자와 반환 값에도 T라는 타입을 추가했다. 제네릭을 사용하면 하나의 타입만이 아닌 다양한 타입의 매개변수와 리턴 값을 사용할 수 있다. 위 함수 getData는 인수의 타입에 의해 타입 매개변수가 결정된다. 이 함수는 다양한 타입의 요소로 구성된 배열을 인자로 전달받아서 반환한다. 만약 number 타입 요소를 갖는 배열을 전달받으면 타입 매개변수는 number가 된다.

     

    T는 제네릭을 선언할 때 일반적으로 사용되는 식별자로, 타입 파라미터(Type parameter)라고 한다. Type의 약자라서 T이며, 반드시 T를 사용해야 하는 것은 아니다.

    'Typescript' 카테고리의 다른 글

    타입스크립트 입문  (0) 2021.01.28

    댓글

Designed by Tistory.