[TypeScript] Iterator

Posted by 신희준 on November 1, 2017


타입스크립트 코리아 이웅재님의 강의 참조


2017 - 11 - 01 (수)

  • Iterator

  • ES6 까지의 for .. of / for .. in

    for .. of


    • ES3
      • for(var i =0; i <array.length; i++)
    • EX5
      • array.forEach : return 으로 순회를 탈출할 수 없다라는 단점
    • ex6
      • for(const item of array) : 배열에서만 사용 가능


    for .. in : 문제가 많아 일반적인 경우 외엔 사용 X


    • 배열을 순회할 때는 사용하지 말자 / 객체를 순회할 때 사용
      • index 가 number가 아니라 string으로 나온다.
      • for ..of 가 나은 것 같음.
    • 객체를 순회할 때 사용
      • for ( const prop of Object.key(obj)) 사용 가능

    Iterator 란 ?

    보통 Custom 객체는 Iterable 하지 않다. Iterable 이 가능한 것을 다루기위한 것

    Array, Map, Set, String, Int32Array, Uint32Array 등등 (자바의 Collections 에 Iterable 인터페이스 처럼 내장 구현체가 있다.)



    Iterable 한 객체의 Symbol.iterator 할 수 있다.


    • Symbol.iterator ( symbol 자체도 ES6에서 나온 것임 )


    CUSTOM 객체에도 Symbol.iterator 함수를 쓰기위해서는 target 을 ES6 로 해야만 함.
    Iterator 를 implements 하고 이것을 구현해줘야 하긴 한다.

    • Custom iterable 만들기
    class CustomIterable implements Iterable<string>{
        private _array: Array<string> = ['first', 'sencond'];
    
        [Symbol.iterator](){
            var nextIndex = 0;
    
    
            return{
                next:() =>{
    
                    return{
                        value : this._array[nextIndex++],
                        done : nextIndex > this._array.length
                    }
                }
            }
        }
    }
    
    const cIterable = new CustomIterable();
    
    for(const item of cIterable){
        console.log(item);
    }