Определения библиотек
Что такое «определение библиотеки»?
Большинство реальных программ на JavaScript зависят от стороннего кода, а не только от кода, который непосредственно контролируется проектом. Это означает, что проект, использующий Flow, может ссылаться на внешний код, у которого либо отсутствует информация о типах, либо эта информация неточна и/или недостаточно подробна. Для решения этой проблемы Flow поддерживает концепцию «определения библиотеки» (также называемого «libdef»).
Libdef — это специальный файл, который сообщает Flow о сигнатурах типов конкретного стороннего модуля или пакета модулей, используемых вашим приложением. Если вы знакомы с языками, в которых есть заголовочные файлы (например, C++), можете считать libdef похожей концепцией.
В этих специальных файлах используется то же расширение .js, что и в обычном коде JS, но они размещаются в каталоге flow-typed в корневом каталоге проекта. Размещение в этом каталоге сообщает Flow, что их следует интерпретировать как libdef, а не как обычные файлы JS.
ПРИМЕЧАНИЕ. Использование каталога
/flow-typedдля libdef — это соглашение, позволяющее Flow JustWork™ сразу после установки и обеспечивающее единообразие в проектах, использующих Flow. Однако можно также явно настроить Flow на поиск libdef в другом месте с помощью раздела[libs]в файле.flowconfig.
Также вы можете узнать больше о файлах объявлений.
Общие рекомендации
Старайтесь предоставлять libdef для каждой сторонней библиотеки, используемой вашим проектом.
Если ваш проект использует стороннюю библиотеку, в которой отсутствует информация о типах, Flow будет обращаться с ней как с любой другой зависимостью без типов и пометит все её экспорты как any.
Поэтому рекомендуется находить или писать libdef для как можно большего числа используемых вами сторонних библиотек. Советуем ознакомиться с flow-typed инструментом и репозиторием, которые помогут быстро находить и устанавливать готовые libdef для сторонних зависимостей.
См. также
-
Файлы объявлений — файлы
.flowдля объявления типов рядом с модулями без типов - Типы модулей — как импортировать и экспортировать типы между модулями
-
.flowconfig [libs]— настройка путей к определениям библиотек
© 2013–present Facebook Inc.
Licensed under the MIT License.
https://flow.org/en/docs/libdefs