Поток libdefs для библиотек с более глубокими путями

1

Я тестирую Flow для ввода нашего JavaScript, и я хочу создать libdef для внутренней библиотеки. Он импортируется следующим образом:

import withValidation from 'internally-shared-libs/decorators/withValidation';

В документации на самом деле не рассматривается вопрос о том, как создавать определения библиотек для таких глубоких путей - только верхние уровни.

Где я могу поместить файл libdef? Что я называю? И как бы это выглядело (игнорируя фактическую реализацию libdef, конечно)?

Заранее благодарим за помощь!

Теги:
flowtype
flow-typed

1 ответ

2
Лучший ответ

Вы можете иметь несколько declare module в одном libdef. Вы можете использовать глубокий путь в качестве имени модуля. Не имеет значения, где этот файл libdef до тех пор, пока он включен в раздел [libs] в вашем .flowconfig.

Вот пример, в котором internally-shared-libs имеет экспорт, а также более глубокие пути, имеющие экспорт:

Libdef:

// @flow

declare module 'internally-shared-libs' {
  declare export function hello(): string;
  declare export function bye(): string;
}

declare module 'internally-shared-libs/decorators/withValidation' {
  // You will obviously want to improve these types
  declare type Input = any;
  declare type Output = any;
  declare export default function withValidation(input: Input): Output;
}

Использование:

// @flow

import { hello, bye } from 'internally-shared-libs';
import withValidation from 'internally-shared-libs/decorators/withValidation';
  • 0
    Идеальный ответ! Хотя следует отметить, что в этом случае пространство имен и, ну, нумерация, в общем, полностью зависит от вас. Хотя может быть хорошей идеей объявить ваши модули, используя имена, которые соответствуют фактическому пути, вы не должны и можете использовать любые другие имена, которые вы считаете подходящими. Если нет никаких конфликтов между разными именами в ваших экспортах, вы можете, например, просто назвать ваши объявления так же, как ваши экспортированные модули.
  • 0
    Большое спасибо - отличный ответ!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню