import type {IterableElement} from 'type-fest';
function * iAmGenerator() {
yield 1;
yield 2;
}
type MeNumber = IterableElement<ReturnType<typeof iAmGenerator>>
And here is an example with an async generator:
import type {IterableElement} from 'type-fest';
async function * iAmGeneratorAsync() {
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:
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
Iterables andAsyncIterables, so it can be use with synchronous and asynchronous generators.Here is an example of
IterableElementin action with a generator function: