함수 타입

·2023년 6월 26일
0

2023 타입스크립트

목록 보기
2/2
post-thumbnail

파라미터 타입

함수의 경우 인자에 타입을 할당할 수 있다. 만약 인자에 타입을 선언하지 않는 경우에는 any 로 타입을 추론한다. 다음 코드는 인자에 타입 애너테이션을 작성하는 것으로 반환 값까지 타입 추론을 통해 파악한 코드이다.

동일한 number 타입을 똑같이 곱하는 것은 반드시 number 타입이 나올 수 밖에 없기 때문에 이러한 추론도 가능한 것이다.

파라미터 기본값 지정하기

자바스크립트는 함수의 파라미터에 대해 기본값을 지정하는 것이 가능하다. 함수를 호출할 때 파라미터 값을 넣지 않는 경우, 해당 값은 기본값이 적용된다.

function asd(num=10) {

}
asd()

타입스크립트에서도 이처럼 기본 값을 지정하는 것이 가능하다. 타입 애너테이션을 지정한 후, 바로 옆에 기본값을 작성해주면 된다. 기본값을 지정하면, 호출시 파라미 값을 넣지 않아도 에러가 나타나지 않는다.

function greet(person : string = "stranger") {
    return `Hi there, ${person}!`;
}
greet() // Hi there, stranger!
greet("Tony") // Hi there, Tony!

함수 반환 값 타입 지정하기

타입스크립트는 파라미터 타입을 기반으로 반환 값을 추론하기도 하지만, 직접적으로 개발자가 해당 함수의 반환 타입을 지정하는 것 역시 가능하다.

function square(num: number): number {
	return num*num;
}

만약 함수에서 아무것도 반환하지 않는 경우에는 타입스크립트는 타입 추론을 통해 함수의 반환 타입을 void로 설정한다. void는 함수가 어떤 것도 반환하지 않는다를 의미한다.

익명함수에서의 타입 지정

프론트엔드 개발자의 경우, 작업을 하며 익명함수를 사용하는 경우가 엄청 많다. 대표적으로 filter, map 메서드 등의 콜백 함수를 생성할 때 주로 익명함수를 사용하는데 익명함수에서 타입스크립트는 어떻게 사용될까?

우선 메서드를 적용하는 값에 대한 정보를 바탕으로 파라미터와 반환값에 대한 타입 추론이 가능하며, 실제 함수와 같이 타입을 지정하는 것도 가능하다.

void

void 타입은 기본 변수가 아닌 함수에서만 주로 사용되는 타입으로, 어떠한 값을 반환하지 함수의 타입으로 사용된다.

함수에 대하여 return 값이 존재하지 않는 경우, 자체적으로 타입 추론을 통해 반환값을 void 로 설정할 수 있으며, 직접 타입 애너테이션을 통해 void 타입을 작성하는 방법도 있다.

만약 리턴 타입을 지정했음에도 return 되는 것이 없거나, 함수의 return 타입이 void 이지만 어떤 결과값을 반환하는 경우 에러가 나타난다.

never

never 는 타입스크립트의 고유 타입으로, 자주 사용되는 타입은 아니지만, 이 타입이 무엇인지는 알아두는 것이 중요하다.

never 타입은 주로 함수의 반환 타입으로 쓰이는 경우와, 어떠한 값을 반환해서는 안되는 함수에 애너테이션을 처리하는 용도로 사용된다.

무언가 값을 반환하지 않는다는 점에서 void 와 유사한데, 서로의 차이로는 void 의 경우 사실 함수의 백그라운드에서 undefined 의 형태로 상태를 반환하지만, neverundefined 을 포함하여 어떠한 값도 반환할 수 없도록 하는 경우 사용한다. 주로 무한 루프를 실행하는 함수나, 예외처리를 발생시키는 함수의 타입으로 사용된다.

기존 void 함수에 never 타입을 선언하는 경우 다음과 같은 에러가 나타난다. 핻당 함수는 일반적으로 종료가 가능하기 때문에 never 타입으로 지정하기 알맞지 않다는 에러이다.

throw 는 대표적인 예외문으로, 에러를 발생시켜 해당 함수의 진행상황을 즉각종료시킨다. 아래의 코드에서 console.log(”end”) 는 절대 실행될 수 없는 unreachable code 가 되며, 이처럼 절대 함수가 어떤 값을 반환할 수 없다는 것을 표현할 때 never 타입을 사용한다.

  • void : 함수가 아무것도 반환하지 않음을 나타낼 때 void 를 사용하며 실제로는 undefined 을 반환한다.
  • never : 함수가 절대로 어떠한 값을 반환해서는 안됨을 나타낼 때 never 를 사용하며 함수를 실행하는 경우, 해당 함수의 엔드 포인트에 절대 도달하지 못하는 경우 사용한다.
profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.

0개의 댓글