[javascript] Angular와 자바스크립트에서의 이터레이터 패턴 이해하기

이터레이터 패턴(iterator pattern)은 소프트웨어 디자인 패턴 중 하나로, 객체의 컬렉션을 반복할 때 사용합니다. JavaScript와 Angular에서 이터레이터 패턴을 어떻게 사용하는지 살펴보겠습니다.

이터레이터 패턴의 개념

이터레이터 패턴은 컬렉션에 대해 순차적으로 접근하고 해당 데이터를 열거하는 방법을 제공합니다. 이를 통해 데이터에 일관된 접근 방식을 제공하고, 컬렉션의 내부 구현에 대한 세부 정보를 숨기는 효과를 냅니다.

JavaScript에서의 이터레이터 패턴

JavaScript에서는 Symbol.iterator를 사용하여 이터러블(iterable) 객체를 생성하고, 해당 객체를 통해 for…of 루프나 직접 호출하여 컬렉션의 요소를 열거할 수 있습니다. 이러한 방식은 Array, Map, Set 등의 기본 내장 객체 뿐만 아니라 사용자 정의 객체에서도 동작합니다.

아래는 JavaScript에서 이터레이터 패턴을 사용한 간단한 예제입니다.

// 이터러블(iterable) 객체 생성
let iterableObj = {
  [Symbol.iterator]() {
    let i = 0;
    return {
      next() {
        if(i < 5) {
          return { value: i++, done: false };
        }
        return { value: undefined, done: true };
      }
    }
  }
}

// for...of 루프를 통한 열거
for(let item of iterableObj) {
  console.log(item);
}

Angular에서의 이터레이터 패턴

Angular에서는 *ngFor 디렉티브를 사용하여 컴포넌트 템플릿에서 배열이나 컬렉션을 순회하고 표시할 수 있습니다. 이는 내부적으로 이터레이터 패턴을 활용하여 각 요소를 열거하고 화면에 바인딩하는 방식으로 동작합니다.

아래는 Angular에서 *ngFor 디렉티브를 사용한 간단한 예제입니다.


<ul>
  <li *ngFor="let item of items">{{ item }}</li>
</ul>

결론

이터레이터 패턴은 JavaScript와 Angular에서 컬렉션의 요소를 열거하는 효과적인 방법을 제공합니다. JavaScript에서는 Symbol.iterator를 통해, Angular에서는 *ngFor 디렉티브를 통해 이터레이터 패턴을 활용할 수 있습니다.

이러한 패턴을 이해하고 활용함으로써 코드의 가독성을 높이고, 유지 보수성을 향상시킬 수 있습니다.

참고 자료

관련 용어: 이터레이터 패턴, JavaScript, Angular, Symbol.iterator, *ngFor 디렉티브