JavaScript — один из самых быстрорастущих языков программирования, который выбирают чаще всего, когда дело доходит до веб-разработки — хотя это утверждение верно, многие могут возразить. Тем не менее, JavaScript все еще не стабилизированный язык, и многие недостающие функции еще предстоит реализовать. В нынешнем климате JavaScript с новым синтаксисом, функциями и использованием множества внешних библиотек кажется труднее, чем когда-либо, быть уверенным, что ваши функции получают или даже что представляют данные. Мы придумали Flow и TypeScript, чтобы помочь JavaScript, но можем ли мы рассчитывать на то, что они всегда будут доступны? — простой ответ был бы нет. Вот почему мне нравится проводить собственное обнаружение с помощью JavaScript, особенно когда речь идет о типах функций.
const simpleFunction = () => {} simpleFunction.constructor.name // "Function"
Чтобы обнаружить асинхронную функцию:
const simpleAsyncFunction = async () => {} simpleAsyncFunction.constructor.name // "AsyncFunction"
Чтобы определить функцию генератора:
function* generatorFunction() {} generatorFunction.constructor.name // "GeneratorFunction"
Чтобы определить функцию генератора:
async function* generatorAsyncFunction() {} generatorAsyncFunction.constructor.name // "AsyncGeneratorFunction"
В завершение истории всегда важно знать, является ли код, который вы используете, синхронным, асинхронным или генератором, но если вы хотите написать комплексные тесты, эти типы обнаружения могут быть необходимы.