Spec-Zone.ru › Flow

Определения библиотек

Что такое «Определение библиотеки»?

Большинство реальных JavaScript-программ зависят от кода третьих сторон, а не только от кода, находящегося непосредственно под управлением проекта. Это означает, что проекту, использующему Flow, может потребоваться ссылка на сторонний код, у которого либо отсутствует информация о типах, либо она неточна и/или неполна. Для решения этой проблемы Flow поддерживает понятие «определения библиотеки» (также известное как «libdef»).

Libdef — это специальный файл, который сообщает Flow о сигнатуре типов определённого стороннего модуля или пакета модулей, используемых приложением. Если вы знакомы с языками, имеющими заголовочные файлы (например, C++), то вы можете рассматривать libdefs как аналогичную концепцию.

Эти специальные файлы используют тот же .js расширение, что и обычный JS-код, но они размещаются в каталоге, названном flow-typed в корневом каталоге вашего проекта. Размещение в этом каталоге сообщает Flow о том, что их следует интерпретировать как libdefs, а не как обычные JS-файлы.

ПРИМЕЧАНИЕ: Использование каталога /flow-typed для libdefs — это соглашение, которое позволяет Flow работать «из коробки» и способствует согласованности между проектами, использующими Flow, но также можно явно настроить Flow на поиск libdefs в других местах, используя раздел [libs] раздела вашего .flowconfig.

Общие рекомендации по наилучшей практике

Постарайтесь предоставить libdef для каждой сторонней библиотеки, используемой вашим проектом

Если ваш проект использует стороннюю библиотеку, у которой нет информации о типах, Flow будет относиться к ней как к любой другой неуточнённой зависимости и пометит все её экспортные значения как any. Интересно, что это единственное место, где Flow неявно введёт any в вашу программу.

Из-за этого поведения рекомендуется искать или создавать libdefs для как можно большего числа сторонних библиотек, которые вы используете. Мы рекомендуем ознакомиться со flow-typed инструментом и репозиторием, которые помогут вам быстро найти и установить существующие libdefs для ваших сторонних зависимостей.

© 2013–present Facebook Inc.
Licensed under the MIT License.
https://flow.org/en/docs/libdefs

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API