https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlCfBV%2FbtrGJFIfA1Y%2FPRKYYW8W2DAJAvkJEPFG51%2Fimg.jpg

자바스크립트에서 함수는 function 키워드와 화살표 ⇒ 기호로 만드는 두 가지 방법이 있다. 타입스크립트 함수는 이를 바탕으로 타입 기능을 추가한 것이다. 이번 장은 함수를 효과적으로 구현하는 방법과 클래스의 메서드를 구현하는 방법을 알아보자.

4-1 함수 선언문

자바스크립트에서 함수는 function 키워드로 만드는 함수와 ⇒ 기호로 만드는 화살표 함수 두 가지 방법이 있다. 다음은 function 키워드로 만드는 함수 구조이다.

function 함수이름(매개변수1, 매개변수2[,...]){
	body
}

타입스크립트 함수 선언문은 자바스크립트 함수 선언문에서 매개변수와 함수 반환 값에 타입 주석을 붙이는 형태로 구성된다.

function 함수이름(매개변수:타입1, 매개변수:타입2[,...]):반환값 타입{
	body
}

위 코드를 토대로 예를 들면

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

매개변수와 반환값의 타입 주석 생략

변수 때와 마찬가지로 함수 선언문에서도 매개변수와 반환값에 대한 타입 주석을 생략할 수 있다. 다만, 함수의 매개변수 타입과 반환 타입을 생략하는 것은 바람직하지 않는다. 타입이 생략되어 있으면 함수의 구현 의도를 알기 어렵고 잘못 사용할 수 있기 때문이다.

void 타입

값을 반환하지 않는 함수는 반환 타입이 void이다. void 타입은 함수 반환 타입으로만 사용할 수 있다.

function printMe(name: string, age: number): void {
	console.log(`name: ${name}, age: ${age}`)
}

함수 시그니처

변수에 타입이 있듯이 함수 또한 타입이 있다. 이러한 함수의 타입을 함수 시그니처라고 한다. 함수의 시그니처는 다음과 같은 형태로 표현한다.