강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

ddobbi님의 프로필 이미지
ddobbi

작성한 질문수

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

함수 타입

함수 타입의 rest 매개변수와 튜플 매개변수

작성

·

23

0

안녕하세요 ts 강의 잘보고있습니다 강사님

벌써 가을이네여!

(react 강의 모두 듣고서 ts강의 듣고 있습니다!)

 

다름아니라

function getSumTuple(...rest: [number, number, number]) {
  let sum = 0;

  rest.forEach((it) => (sum += it));
  return sum; //자동으로 return 자료형은 number
}

rest 매개변수와 tuple 조합은 주로 사용을 같이하나요?



rest는 뭔가 가변적인 매개변수일때 주로 사용하는것 같아서요?!

아래처럼 사용하는게 직관적인것 같은데요

function getSumTuple(a: number, b: number, c: number)

혹시 매개변수명을 따로 지정하기 애매할 경우

예시였을까요?

 

확인 부탁드립니다!

답변 2

0

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 ddobbi님 이정환입니다.

rest 매개변수는 말씀하신대로 여러개의 매개변수의 개수를 정확히 알지 못하거나, 굳이 명시할 필요가 없을 경우 사용되므로 튜플과도 함께 아무런 문제 없이 사용하실 수 있습니다 😀

 

0

안녕하세요, 인프런 AI 인턴입니다.
반갑습니다, ddobbi님!

질문 주신 내용에 대해 답변드리겠습니다. rest 매개변수와 tuple 조합 사용에 대해 이야기해주셨네요. rest 매개변수는 가변적인 개수의 인자를 받을 수 있게 해주기 때문에, 인자가 몇 개가 될지 모르는 상황에 사용됩니다. tuple, 즉 배열과 유사한 형태이지만 고정된 크기와 타입을 가지는 구조입니다.

말씀하신 것처럼 rest 매개변수는 다수의 인자를 받아야 할 때 유용합니다. 그러나 [number, number, number]처럼 tuple 타입을 rest 매개변수에 설정하게 되면, 인자의 개수와 타입이 고정되기 때문에, 사실상 가변적이라고 할 수는 없습니다. 이 경우, 차라리 명시적으로 인자를 받는 것이 가독성이 좋고 오류를 줄일 수 있습니다.

질문하신 상황처럼 인자의 이름이 필요하지 않거나, 실제로 튜플을 사용하는 이유가 없다면, 명시적으로 각각의 매개변수를 선언하는 것이 좋습니다. 인자의 의미를 더 분명하게 전달할 수 있습니다.

기존 질문과 유사한 내용으로 도움받을 수 있는 게시물들을 찾아보았습니다:

  1. 함수 오버로드의 func() 구현 시그니쳐 작성 중 궁금한게 있습니다.

위 게시물에서는 함수 오버로딩과 매개변수 처리 방식에 대해 더 깊이있는 논의가 있습니다. 참고해보시면 좋겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ddobbi님의 프로필 이미지
ddobbi

작성한 질문수

질문하기