[typescript] 비동기 이터레이션과 await for...of 문을 사용하여 파일 처리하는 방법

파일 처리는 프런트엔드 및 백엔드 개발에서 흔히 발생하는 작업입니다. TypeScript에서 비동기 이터레이션과 await for...of 문을 사용하면 파일을 효율적으로 처리할 수 있습니다. 이 기능을 사용하여 파일을 읽고 쓰는 방법을 살펴보겠습니다.

1. 비동기 이터레이션

TypeScript에서는 Symbol.asyncIterator를 사용하여 비동기 이터레이션을 구현할 수 있습니다. 비동기 이터레이션은 next 메서드가 Promise를 반환하는 이터레이터입니다. 이를 사용하면 파일 처리에 이상적입니다.

예를 들어, 다음과 같이 비동기 이터레이션을 통해 파일을 읽을 수 있습니다.

import * as fs from 'fs';

async function* readFile(path: string): AsyncGenerator<string> {
  const data = await fs.promises.readFile(path, 'utf-8');
  yield data;
}

2. await for…of 문

for...of 문은 이터러블 객체를 순회하고 해당 요소를 처리할 수 있습니다. await for...of 문을 사용하면 비동기 이터레이터를 처리하고 각각의 항목에 대해 await를 사용하여 처리할 수 있습니다.

예를 들어, 다음과 같이 await for...of 문을 사용하여 파일을 처리할 수 있습니다.

async function processData() {
  const filePaths = ['file1.txt', 'file2.txt', 'file3.txt'];

  for await (const data of filePaths.map(readFile)) {
    console.log(data);
  }
}

위의 예제에서는 readFile 함수가 각 파일을 읽고 데이터를 반환하며, for await (const data of ...) 구문을 사용하여 파일을 순회하고 각 파일의 데이터를 처리합니다.

이러한 방식으로, TypeScript에서 비동기 이터레이션과 await for...of 문을 사용하여 파일을 효과적으로 처리할 수 있습니다.

감사합니다.

참조: