IT관련

Iterable이란? 프로그래밍에서 반복 가능한 객체 완벽 정리

파란하늘999 2025. 12. 13. 03:28

JavaScript, Python 등 현대 프로그래밍 언어에서 자주 등장하는 Iterable(이터러블) 개념을 자세히 정리해 보았어요. 특히 Angular나 JavaScript를 다루다 보면 객체를 반복할 때 이 용어가 핵심이 되죠!

1. Iterable의 단어적 의미와 유래

Iterable은 실제 영어 단어로, 사전적 의미는 "반복할 수 있는(Capable of being iterated or repeated)" 입니다.

  • 어원(Etymology): 라틴어 "iterare" (반복하다, 다시 하다)에서 유래. "iterate" (반복하다) + "-able" (할 수 있는) 접미사로 만들어졌어요. (예: readable = 읽을 수 있는, manageable = 관리할 수 있는)
  • 사전 등록 현황:
    • Oxford English Dictionary(OED): 등록되어 있지만 obsolete(구식, 거의 쓰이지 않는 단어) 로 분류. 최초 사용 증거는 1561년경.
    • Wiktionary, Webster's Dictionary(1913): "Capable of being iterated"로 정의.
    • 일상 영어에서는 거의 안 쓰여서 한국어 사전(다음, 네이버 등)에도 잘 안 나와요. 하지만 프로그래밍 분야에서 부활해서 표준 용어가 되었어요!

프로그래밍에서는 이 기본 의미를 그대로 가져와 "반복(iteration)할 수 있는 객체"라는 뜻으로 사용합니다.

2. 프로그래밍에서 Iterable이란?

Iterable하나씩 요소를 순서대로 꺼낼 수 있는 객체예요. 즉, for...of 루프나 스프레드 연산자(...) 등으로 반복 처리할 수 있는 것!

  • 조건: 객체에 [Symbol.iterator]() 메서드가 있어야 함. 이 메서드는 iterator(next() 메서드를 가진 객체)를 반환합니다.
  • 주요 언어 공통 개념 (JavaScript, Python, Java 등):
    • Iterable: 반복 가능한 객체 (iterator를 제공).
    • Iterator: 실제로 next()를 호출해 값을 하나씩 뱉어내는 객체.
    • Iteration: 반복 과정 자체.

3. JavaScript에서 Iterable 예시 (MDN 기준)

JavaScript(ES6+)에서 iterable은 핵심 기능이에요.

내장 Iterable 타입

타입 예시 반복 결과
Array [1, 2, 3] 1, 2, 3
String "hello" 'h', 'e', 'l', 'l', 'o'
Map new Map([[k1,v1], [k2,v2]]) [k1,v1], [k2,v2]
Set new Set([1,2,3]) 1, 2, 3
NodeList DOM 요소 컬렉션 각 요소

일반 Object는 기본적으로 NON-Iterable!

const obj = { a: 1, b: 2 };
for (const item of obj) { }  // TypeError: obj is not iterable

객체를 Iterable로 만들기

const myObj = { a: 1, b: 2, c: 3 };

myObj[Symbol.iterator] = function* () {
  for (const key of Object.keys(this)) {
    yield this[key];  // 값만 반복 (1, 2, 3)
    // yield [key, this[key]];  // [키, 값] 쌍
  }
};

for (const value of myObj) {
  console.log(value);  // 1 2 3
}

console.log([...myObj]);  // [1, 2, 3] 스프레드 가능!

4. Iterable이 되면 가능한 일들

  • for...of 루프
  • 스프레드 연산자: [...iterable]
  • 디스트럭처링: const [a, b] = iterable;
  • Array.from(iterable)
  • Promise.all(iterable)

5. Angular 실무 팁

Angular 템플릿(*ngFor)은 배열이나 iterable을 기대해요.

  • 일반 객체 → | keyvalue 파이프나 Object.values() 사용 추천.
  • 커스텀 iterable 구현 → for...of는 되지만 템플릿에서 직접 지원 안 될 수 있음.

요약

구분 설명
단어 의미 반복할 수 있는 (구식 영어 단어)
어원 라틴어 iterare (반복하다)
프로그래밍 의미 Symbol.iterator를 가진 반복 가능 객체
왜 중요한가? for...of, 스프레드 등 현대 문법의 기반

Iterable은 프로그래밍에서 "리스트처럼 돌릴 수 있는 모든 것"이라고 생각하면 쉽습니다!

 

이 개념만 이해하면 JavaScript/Angular에서 객체 반복이 훨씬 자유로워져요. 😊

반응형