skip to Main Content
Ts 2 3 Generators

TypeScript 2.3 – Generatory

W TypeScript 2.3, który pojawi się w maju. Jedną z nowych możliwości, dostępnych w języku, będzie możliwość korzystania z generatorów.

TypeScript goni z zmianami w pojawiającymi się JavaScript. Jak TypeScript goni za zmianami to ja też muszę.

Generator to funkcja, która potrafi zwracać wiele wartości. Potrafi uwaga, uwaga generować je, na przykład na podstawie poprzednich wartości.

Klasycznie jak funkcja coś zwraca to funkcja razem z zwróconą wartością kończy swój żywot. W przypadku generatorów one giną, gdy:

  • Wykonywanie kodu dojdzie do klamry zamykającą funkcję
  • Generator wyrzuci wyjątek
  • Generator zostanie przerwany

Kod:

Dodałem wszędzie gdzie się da adnotacje o typach.

W powyższym przykładzie utworzyłem, nie kończący się generator, poprzez wykorzystanie nie kończącej się pętli while(true) {...}.

Trzeba zaważyć, że przy tworzeniu funkcji-generatora, słowo kluczowe function zakończone jest gwiazdką *. To informacja dla kompilatora, że funkcja jest generatorem.

Funkcje generatory (w TypeScript) zwracają typ generyczny IterableIterator<TType> (gdzie w naszym przypadku TType to number). Jest to obiekt z 3 funkcjami.

  • next() otrzymujemy kolejną wartość z generatora
  • return(value) funkcja zakończa działanie generatora i zwraca podaną wartość.
  • throw(exception) funkcja wyrzuca wyjątek w generatorze.

Funkcja next() nie zwraca nam ‚czystej’ wartości. Jest ona opakowana w IteratorResult<TType>. Jest to struktura o dwóch polach:

  • value – wartość typu TType
  • done – wartość prawda/fałsz określająca czy generator umiał wygenerować kolejną wartość.

Chcę się pobawić z TypeScript 2.3 (przed premierą)

Visual Studio Code, obok wersji stabilnej, ma także wersję niestabilną o nazwie Insiders. Insiders edition przychodzi razem z wsparciem dla aktualnej wersji  developerskiej TypeScripta.

Paweł Sołtysiak

Programista, domowy kucharz i "amator amerykańskiej polityki".
Zbieram informacje z całej sieci, po odrzuceniu chwastów i dodaniu swojej opinii publikuje na blogu.

Back To Top