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에서 객체 반복이 훨씬 자유로워져요. 😊
반응형
'IT관련' 카테고리의 다른 글
| 2025년 말 최신 AI 트렌드: 현재 AI가 집중하는 주요 포인트 (0) | 2025.12.22 |
|---|---|
| AI가 논문만 기반으로 답변할 수 있을까? (0) | 2025.12.15 |
| Android Studio 단축키 정리 (0) | 2025.12.12 |
| Windows 11 유용한 단축키 정리 (0) | 2025.12.12 |
| Visual Studio 2015 ~ 2022 공통 단축키 정리 (0) | 2025.12.12 |