[typescript] function 타입 정의하기

dev stefanCho·2021년 12월 3일
0

typescript

목록 보기
15/16

Function with Interface

Call Signatures

interface로 function을 정의하는 것은 call signature만 추가해주면 된다.

interface Func<T> {
  (arg: T): T;
}

const num: Func<number> = (num) => num;
const str: Func<string> = (str) => str;

num(1);
str('1');

js에서는 function도 object이다.

js에서는 function도 object이기 때문에, function자체가 callable 하면서, 또한 추가로 property도 가질 수 있다.

const func = () => {
  return 123;
};

func.a = 'a';

console.log(func.a)
console.log(func()) 

function interface에 property 추가하기

만약 해당 function interface에 추가적인 property가 있다면 inferface에서는 아래와 같이 call signature와 property를 정의할 수 있다.

interface Func<T> {
  (str: T): T; // call signature
  validation: (str: T) => boolean; // 추가적인 function property
  id: string; // 추가적인 property
}

const func: Func<string> = (str) => {
  return str;
}

func.id = "1";
func.validation = () => true;
func('hi')

Function With Type Alias

function은 type alias로 정의할 수 있다.

type Func<T> = (str: T) => T;

const func: Func<string> = (str) => {
  return str;
}

func('hello')

Ref

profile
Front-end Developer

0개의 댓글