Detekce funkcí generátoru pomocí JavaScriptu

V současném prostředí JavaScriptu s novými syntaxemi, funkcemi a používáním spousty externích knihoven se zdá být těžší než kdy jindy ujistit se, jaké funkce jsou poskytovány, nebo dokonce co data představují. Samozřejmě jsme vymysleli Flow a TypeScript, které nám pomohou, ale nemůžeme počítat s tím, že budou vždy k dispozici. Proto rád dělám svou vlastní detekci pomocí JavaScriptu, zejména pokud jde o typy funkcí.

Chcete-li zjistit, zda je funkce generátorem nebo funkcí asynchronního generátoru, můžete použít následující kód:

// Sample generator function
function* sampleGenerator() {}
sampleGenerator.constructor.name
// "GeneratorFunction"

async function* sampleGenerator() {}
sampleGenerator.constructor.name
// "AsyncGeneratorFunction"

Shodou okolností můžete také zjistit běžnou asynchronní funkci pomocí:

async function asyncThing() {}
asyncThing.constructor.name
// "AsyncFunction"

Vždy je důležité vědět, zda kód, který používáte, je synchronizovaný, asynchronní nebo generátor, ale pokud používáte externí knihovny nebo chcete psát komplexní testy, mohou být tyto typy detekce nezbytné.