Ответ
В 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); - Это инструмент времени компиляции, он не влияет на проверку типов во время выполнения.
- Основная польза — улучшение читаемости кода и упрощение рефакторинга.