TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 995 subscribers
Post #176 765
Привет, с вами снова Катя, Flutter Dev Friflex!👋

Во время работы над модулем для взаимодействия с базой данных через Drift возникла необходимость часто повторять одни и те же типы функций — особенно когда речь шла о фильтрации и сортировке таблиц. Чтобы не тянуть за собой длинные сигнатуры, затаскивать библиотеку и не усложнять код, я решила использовать typedef.

Что такое typedef?
Typedef
позволяет дать имя какому-то типу. Это особенно удобно, когда тип громоздкий, например, функция с дженериками, списки функций или колбэки. Сложный тип описывается один раз и дальше используется по имени — лаконично и понятно.

Пример
При работе с БД часто встречаются такие сигнатуры:

Expression<bool> Function(MyTable tbl)

List<OrderingTerm Function(MyTable tbl)>


Чтобы не затаскивать drift в каждый файл и гадать, что за конструкция используется, были созданы именованные типы:

// Вынесенная фильтрация
typedef FilterExpression<Q extends BaseTable> = Expression<bool> Function(Q tbl);

// Вынесенный список для сортировки
typedef OrderByExpressions<Q extends BaseTable> = List<OrderingTerm Function(Q tbl)>;


Как использовать?
Вместо длинных сигнатур теперь в универсальных функциях можно использовать понятные имена:

Future<List<T>> fetchFilteredData<T extends BaseTable>({
  required FilterExpression<T> where,
  OrderByExpressions<T>? orderBy,
}) async {}


Гораздо чище и легче воспринимается при чтении и навигации по коду.

Вывод
Typedef
— небольшой, но полезный инструмент, который помогает писать аккуратный и поддерживаемый код. Особенно полезен при работе с абстракциями, как в случае с Drift, или при проектировании универсальных репозиториев.
  • ❤ 12
  • 🔥 6
  • 👍 4
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →