함수 타입의 rest 매개변수와 튜플 매개변수
42
작성한 질문수 5
안녕하세요 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
안녕하세요 ddobbi님 이정환입니다.
rest 매개변수는 말씀하신대로 여러개의 매개변수의 개수를 정확히 알지 못하거나, 굳이 명시할 필요가 없을 경우 사용되므로 튜플과도 함께 아무런 문제 없이 사용하실 수 있습니다 😀
0
안녕하세요, 인프런 AI 인턴입니다.
반갑습니다, ddobbi님!
질문 주신 내용에 대해 답변드리겠습니다. rest 매개변수와 tuple 조합 사용에 대해 이야기해주셨네요. rest 매개변수는 가변적인 개수의 인자를 받을 수 있게 해주기 때문에, 인자가 몇 개가 될지 모르는 상황에 사용됩니다. tuple, 즉 배열과 유사한 형태이지만 고정된 크기와 타입을 가지는 구조입니다.
말씀하신 것처럼 rest 매개변수는 다수의 인자를 받아야 할 때 유용합니다. 그러나 [number, number, number]처럼 tuple 타입을 rest 매개변수에 설정하게 되면, 인자의 개수와 타입이 고정되기 때문에, 사실상 가변적이라고 할 수는 없습니다. 이 경우, 차라리 명시적으로 인자를 받는 것이 가독성이 좋고 오류를 줄일 수 있습니다.
질문하신 상황처럼 인자의 이름이 필요하지 않거나, 실제로 튜플을 사용하는 이유가 없다면, 명시적으로 각각의 매개변수를 선언하는 것이 좋습니다. 인자의 의미를 더 분명하게 전달할 수 있습니다.
기존 질문과 유사한 내용으로 도움받을 수 있는 게시물들을 찾아보았습니다:
위 게시물에서는 함수 오버로딩과 매개변수 처리 방식에 대해 더 깊이있는 논의가 있습니다. 참고해보시면 좋겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
핸드북 light/dark mode 관련 이슈가 있는 것 같습니다.
0
46
1
제네릭 클래스 핸드북 페이지가 undefined라고 나옵니다.
0
46
2
적절한 타입 찾기 React.ChangeEvent<HTMLInputElemen>
0
51
2
outDir 옵션 추가 후 컴파일 오류 질문
0
130
1
호출 시그니처 질문
0
87
2
서로소 유니언 타입이 discriminated union과 동의어 인가요?
0
96
2
조건부타입소개 중 함수오버로딩 활용 시 인수의타입과 함수의 반환값의 타입이 깨지는 문제
0
81
1
할인쿠폰 관련하여
0
188
2
프론트엔드에서의 인터페이스활용
0
115
2
안녕하세요 이정환님!
0
103
1
Node.js 설치에 관한 질문입니다.
0
93
2
함수 타입 호출 시그니처
0
71
1
35강. 모듈 보강은 라이브러리 파일을 직접 편집해야 하나요?
0
76
2
인터페이스 문법이 있는데 타입 별칭 문법은 왜 있나요?
0
130
4
마우스 호버 시 정보
0
107
2
vite으로 리액트 빌드하기를 업데이트해주세요.
1
95
2
타입가드를 만들어 사용하는 이유가 궁금합니다.
0
97
2
섹션 12가 너무 어려운데... 정상이겠죠..?
0
147
2
선생님.. 알고리즘도 강의해주시면안되나요
0
114
2
선생님은 어떻게 이런걸 아세요?
0
141
1
type: module
0
110
2
7:17초 업캐스팅 질문이있습니다!
0
88
1
슈퍼타입질문
1
78
2
프로젝트 설치
0
123
2





