smelukov

10 августа 2020

# Понедельник 8 твитов

Привет мир! Я Сергей Мелюков (@smelukov). Работаю архитектором в Яндекс Маркет. Люблю ООП, сборщики (особенно самоп… twitter.com/i/web/status/1…

8:36

Хочется немного пообщаться ☺️ Как вы относитесь к хелперам модификации типов типа Pick/Omit/etc в TS/Flow

8:40

Собственно, к чему это... Я противник нескольких вещей:

13:03

Utility Types - набор функций. На вход поступает один тип, на выходе - другой
Используются для извлечения/модификац… twitter.com/i/web/status/1…

13:03

Как минимум ухудшается читаемость/поддерживаемость кода, особенно при большой вложенности
Часто применяются не пото… twitter.com/i/web/status/1…

13:04

В итоге, изменив входной тип, мы сломаем места, в которых используется выходной тип, их нужно будет рефакторить. Си… twitter.com/i/web/status/1…

13:04

Если мы хотим именно расширить тип и выходной реально зависит от входного, то стоит задать себе вопрос: а правильно… twitter.com/i/web/status/1…

13:04

Давайте попробуем устроить интерактив: присылайте свои примеры использования хелперов (пример кода и описание того,… twitter.com/i/web/status/1…

13:05

# Четверг 5 твитов

Далее по списку идут type union/intersection
В TS/Flow есть вещи, которые, к сожалению, нельзя реализовать без них.… twitter.com/i/web/status/1…

14:45

Про наследования типов
В случае с ООП-кодом можно просто наследовать один класс от другого и готов, но в ином случа… twitter.com/i/web/status/1…

14:46

К слову, в C++ есть наследование структур (cpp.sh/6yixw) но этим все и ограничивается, а вот в TS/Flow м… twitter.com/i/web/status/1…

14:46

Про nullable
С flow проще, там можно описать поле(foo: ?string) которое сможет легально принимать null
Да, туда мож… twitter.com/i/web/status/1…

14:46

А вот в TS нужно явно указать, что в поле можно записать null ({foo: string | null})

14:46

other