Что такое typedef в Dart?

«Что такое typedef в Dart?» — вопрос из категории Dart Core, который задают на 29% собеседований Flutter Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Dart typedef (или псевдоним типа) — это способ дать имя сложному типу, чаще всего сигнатуре функции, чтобы упростить чтение и написание кода. Он не создаёт новый тип, а лишь предоставляет альтернативное имя для существующего.

Основное применение — упрощение сигнатур функций:

// Без typedef: громоздкий тип параметра
void processOperation(int Function(int, int) operation) {
  print(operation(5, 3));
}

// С typedef: код становится чище и понятнее
typedef IntOperation = int Function(int, int);

void processOperationClean(IntOperation operation) {
  print(operation(5, 3));
}

int add(int a, int b) => a + b;
int multiply(int a, int b) => a * b;

void main() {
  IntOperation myOperation = add;
  processOperationClean(myOperation); // 8

  myOperation = multiply;
  processOperationClean(myOperation); // 15
}

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

// Псевдоним для сложного типа коллекции
typedef UserList = List<Map<String, dynamic>>;

UserList fetchUsers() {
  return [
    {'id': 1, 'name': 'Alice'},
    {'id': 2, 'name': 'Bob'},
  ];
}

Важные особенности:

  • Начиная с Dart 2.13, typedef поддерживает дженерики: typedef Mapper<T> = T Function(String);
  • Это инструмент времени компиляции, он не влияет на проверку типов во время выполнения.
  • Основная польза — улучшение читаемости кода и упрощение рефакторинга.