[typescript] 튜플의 요소 셔플하기

아래는 주어진 튜플의 요소를 셔플하는 TypeScript 함수의 예시입니다.

function shuffleTuple<T extends any[]>(tuple: T): T {
  for (let i = tuple.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [tuple[i], tuple[j]] = [tuple[j], tuple[i]];
  }
  return tuple;
}

const myTuple: [number, string, boolean] = [1, "hello", true];
const shuffledTuple = shuffleTuple(myTuple);
console.log(shuffledTuple); // 예상 출력: [true, "hello", 1]

이 예시에서 shuffleTuple 함수는 제네릭 타입 T의 튜플을 매개변수로 받아 해당 튜플을 셔플한 후 반환합니다. 함수 내부에서는 Fisher-Yates 알고리즘을 사용하여 요소들을 섞어줍니다. 또한, myTuple과 같이 특정한 튜플을 생성하고, shuffleTuple 함수를 사용하여 이를 셔플한 결과를 출력하고 있습니다.

이를 통해 TypeScript에서 튜플의 요소를 셔플하는 방법에 대해 알아보았습니다.