Реактивная навигация и типизированный поток - PullRequest
0 голосов
/ 10 мая 2019

Я только начал использовать определения типа потока для моих популярных библиотек в приложении React Native, например, в React Navigation, но мне довольно сложно найти документацию по типам и способам их использования. Я по-прежнему получаю ошибки в своей среде IDE и чувствую, что Flow тратит больше времени, чем добавляет ценность к своему опыту разработчика, потому что мне приходится постоянно искать типы (и иногда даже не найти ответа). Любой совет по этому поводу?

1 Ответ

1 голос
/ 12 мая 2019

Сложное веб-приложение, использующее множество модулей npm, очень редко будет строго напечатано.Цель строгой типизации в JS состоит в том, чтобы набрать как можно больше, насколько это возможно или даже разумно.Модули, у которых нет libdefs, придут как any, и это хорошо. Очевидно, было бы замечательно, если бы все, что вы использовали, имело полные типы, но только учитывая способ, которым достигнут прогресс, это практически невозможно,Добавьте к этому тот факт, что простой процесс обновления часто приводит к появлению большего количества ошибок в вашей кодовой базе, и вы в конечном итоге вынуждены признать, что типизация является прогрессивным процессом, а не блокирующим.

Теперь, когда это не так, кажется, у вас есть несколько разных подвопросов:

Мне нужно постоянно искать типы

Не совсем уверен, что вы подразумеваете под этим, но вы можете сказать, что трудно найти типы для пакета, который вы используете.Убедитесь, что вы знакомы с тем, как работает flow-typed CLI (npx flow-typed), он поможет вам в поиске и установке совместимых libdefs.Если вы ничего не нашли для модуля в flow-typed, то покопайтесь в исходном репозитории github и убедитесь, что типы потоков не поставляются с самим модулем.Если вы столкнетесь с пакетом с файлом .d.ts (TypeScript), попробуйте преобразовать его в libdef с помощью flowgen .Если ничто не оказывается плодотворным, вы, вероятно, должны просто отказаться от типов и продолжить.

В этом случае я бы фактически запустил свой собственный libdef (npx flow-typed create-stub <package name>) и заполнил некоторые основные типы, как я и делал.Вы можете начать очень просто, у меня есть libdef для react-select, который проверяет только одну опору компонента, options проп (однако я не помню, почему у меня это есть: P).Опять же, прогрессивная типизация является целью.Проверка того, что один винт действительно хорош, по сравнению с проверкой ни одного.

Мне трудно найти документацию по типам и способам их использования

Там вообще нетнастоящая документация для libdefs в flow-typed, если она не написана автором пакета где-нибудь.Я обычно читаю сами libdefs, но если вы находите использование запутанным, я бы порекомендовал посмотреть тесты , связанные с libdef.Вы также можете просмотреть любые соответствующие вопросы или PR , чтобы найти примеры использования.

иногда даже не найти ответа

Добавить $FlowFixMe и возвращайтесь к нему позже, если это слишком сильно замедляет вас.Все эти вещи станут намного более управляемыми, так как вы привыкнете к потоку и строгой типизации в целом, и поток, и libdefs будут постоянно улучшаться.

Я все еще получаю ошибки в моей IDE

Если вы не можете их исправить, добавьте $FlowFixMe и возвращайтесь позже.На самом деле в Flow есть инструмент, включенный в его исходный код, в котором есть утилита для добавления $FlowFixMe для каждой ошибки, но, поскольку в настоящее время он не поставляется в npm, вам необходимо клонировать исходный код, чтобы использовать его.

...