[typescript] 비동기 이터레이션과 await for...of 문을 사용한 암호화 방법

안녕하세요! 이번에는 TypeScript를 사용하여 비동기 이터레이션과 await for...of 문을 활용하여 암호화를 수행하는 방법에 대해 알아보겠습니다. 이러한 방식은 비동기적으로 데이터를 처리하면서, 간결하고 가독성 있는 코드를 작성할 수 있게 도와줍니다.

1. async 함수와 for…of 루프

먼저, 우리는 async 함수와 for...of 루프를 사용하여 비동기적으로 데이터를 처리할 것입니다. 다음은 예시 코드입니다.

async function encryptData(data: string[]): Promise<string[]> {
  const encryptedData: string[] = [];

  for await (const item of data) {
    const encryptedItem = await encrypt(item);
    encryptedData.push(encryptedItem);
  }

  return encryptedData;
}

위의 코드에서, encryptData 함수는 입력 데이터 배열을 받아 각 항목을 암호화한 후 새로운 배열에 추가하여 반환합니다. for...of 루프 내부에서 encrypt 함수를 await 키워드와 함께 호출함으로써, 각 항목이 비동기적으로 암호화되고 결과가 기다려집니다.

2. encrypt 함수 구현

암호화를 위한 encrypt 함수는 여러 가지 방법으로 구현할 수 있지만, 여기서는 간단한 시뮬레이션을 위한 예시 코드를 작성해보겠습니다.

function encrypt(data: string): Promise<string> {
  return new Promise((resolve) => {
    // 간단한 변환 알고리즘 시뮬레이션
    const encryptedData = data.split('').reverse().join('');
    resolve(encryptedData);
  });
}

위의 코드에서, encrypt 함수는 입력 데이터를 간단한 방식으로 암호화하여 결과를 Promise로 감싸 반환합니다.

3. 사용 예시

이제 encryptData 함수를 사용해보겠습니다.

const dataToEncrypt: string[] = ['apple', 'banana', 'cherry'];
encryptData(dataToEncrypt)
  .then((result) => {
    console.log(result);
  })
  .catch((error) => {
    console.error(error);
  });

위의 코드에서, encryptData 함수를 호출하고 결과를 받아와 콘솔에 출력하는 방법을 보여주었습니다.

마치며

이렇게 TypeScript의 비동기 이터레이션과 await for...of 문을 사용하여 데이터 암호화를 수행하는 방법에 대해 알아보았습니다. 이러한 패턴은 비동기 작업을 처리할 때 간결하고 직관적인 코드를 작성하는데 도움이 됩니다. 여러분의 프로젝트에서 유용하게 활용해보시기 바랍니다.

참고 문헌: