Репозиторий с материалами доклада "Типизируй этo"
Часто видите ошибку “itShouldBeAnArray.map is not a function”? Автодополнение IDE дает список всех идентификаторов проекта? С трудом понимаете, что конкретно надо этому API? Коллеги с бека смеются и советуют перейти на “настоящий” язык? Нет! JavaScript мы не бросим! Потому что он хороший :). Мы его протипизируем! И поможет нам в этом Flow!
https://www.youtube.com/watch?v=-DhimKUoXPA
Большое спасибо Арине Николаевой за съемку и Андрею Иванову за монтаж!
В докладе я разбираю два примера:
- "Простой". На нем я в двух словах объяснил, как работает Flow. Начало примера - ветка simple-example-start. Конец - simple-example-end.
- "Крестики нолики на React". В приложении есть несколько ошибок. Добавляя типы, я нахожу и исправляю эти ошибки. Начало примера - ветка react-example-start. Конец - raect-example-end.
- Документация
- Попробовать Flow online
- Цикл статей на Хабре
- Послушав этот доклад, Вы точно начнете захотите Flow
- Хорошее обзорное видео о Flow. Затрагивает все темы. От "зачем все это нужно" до "как работает сервер Flow".
- Для тех, кто хочет глубже понять Flow, стоит посмотреть вот это видео
- Отличный доклад от Ильи Климова «Строгий» JavaScript: типы против реальности
- Исследование о том, что статическая типизация снижает количество ошибок
- Вводный курс по Flow от Javascript.Ninja
В системе типов Flow выход контравариантный, а вход ковариантный.
Массивы инвариантны.
Поля объектов инвариантны. Но можно вариантность задавать руками. Пример.