[typescript] 스프레드 연산자 (전개구문, 펼침, spread operator) 를 사용한 배열을 함수의 인자(인수, 매개변수, arguments)로 넘기고 싶을 경우

By | 2월 1, 2023

javascript 라면 그냥 사용하면 되는데, typescript 일 경우 아무 생각 없이 사용하면 다음과 같은 에러가 발생한다.

A spread argument must either have a tuple type or be passed to a rest parameter


function getObj(name: string, age: number) {
  return {
    name,
    age,
  };
}

// 해결방안 1) as const를 사용하여 배열을 튜플(tuple)로 만든다.
const result = getObj(...(['Bobby Hadz', 30] as const));

// 해결방안 2) 인수를 선언하는 시점에 아예 튜플로 만든다.
const myTuple: [string, number] = ['Bobby Hadz', 30];
const result = getObj(...myTuple);
// 해결방안 3) 함수정의를 아예 rest parameters 형식으로 한다. (java의 variable arguments 처럼)
function getArr(...args: string[]) {
  return args;
}

const result = getArr(...['James', 'Alice', 'Bobby Hadz', 'Carl']);


참고

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments