import { type IterableElement } from "https://deno.land/x/actionify@0.3.0/src/deps/types.ts";
Get the element type of an Iterable
/AsyncIterable
. For example, an array or a generator.
This can be useful, for example, if you want to get the type that is yielded in a generator function. Often the return type of those functions are not specified.
This type works with both Iterable
s and AsyncIterable
s, so it can be use with synchronous and asynchronous generators.
Here is an example of IterableElement
in action with a generator function:
Examples
Example 1
Example 1
import type {IterableElement} from 'type-fest';
functioniAmGenerator() {
yield 1;
yield 2;
}
type MeNumber = IterableElement<ReturnType<typeof iAmGenerator>>
And here is an example with an async generator:
Example 2
Example 2
import type {IterableElement} from 'type-fest';
async functioniAmGeneratorAsync() {
yield 'hi';
yield true;
}
type MeStringOrBoolean = IterableElement<ReturnType<typeof iAmGeneratorAsync>>
Many types in JavaScript/TypeScript are iterables. This type works on all types that implement those interfaces. For example, Array
, Set
, Map
, stream.Readable
, etc.
An example with an array of strings: