https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlCfBV%2FbtrGJFIfA1Y%2FPRKYYW8W2DAJAvkJEPFG51%2Fimg.jpg

이번 장에서는 타입스크립트 언어가 제공하는 반복기와 반복기 제공자, 그리고 생성기에 대해 알아보자.

6-1 반복기 이해하기

실습 프로젝트 설정

이번 장에서 소개하는 예제는 Node.js 설정과 tsconfig.json 파일에 별도의 설정이 필요하다. 먼저 다음 명령을 터미널에서 실행하자.

npm init -y
npm i -D typescript ts-node @types/node
mkdir src

다음, tsc —init 명령으로 tsconfig.json 파일을 생성하고 다음 내용으로 대체하자.

// tsconfig.json
{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es2015",      
    "moduleResolution": "node",      
    "outDir": "dist",
    "baseUrl": ".",
    "sourceMap": true,
    "downlevelIteration": true,
    "noImplicitAny": false,
    "paths": { "*": ["node_modules/*"] }
  },
  "include": ["src/**/*"]
}

반복기와 반복기 제공자

앞서 5장에서 for…in과 for…of 문을 공부했었다. 이 중 for…of 문은 다음 코드처럼 타입에 무관하게 배열에 담긴 값을 차례로 얻는 데 활용한다.

const numArray: number[] = [1,2,3]
for(let value of numArray)
	console.log(value) // 1 2 3

const strArray: string[] = ["hello", "world", "!"]
for(let value op strArray)
	console.log(value) // hello world !

for…of 문은 다른 프로그래밍 언어에서도 반복기 라는 주제로 흔히 볼 수 있다. 대부분 프로그래밍 언어에서 반복기는 다음과 같은 특징이 있는 객체이다.

  1. next라는 이름의 메서드를 제공한다.
  2. next 메서드는 value와 done이라는 두 개의 속성을 가진 객체를 반환한다.

다음 코드에서 createRangeIterable 함수는 next 메서드가 있는 객체를 반환하므로 이 함수는 반복기를 제공하는 역할을 한다. 이러한 반복기를 제공하는 역할을 하는 함수를 반복기 제공자라고 한다