Анонимные функции почти всегда сразу передаются методу, принимающим обратный вызов какого-либо типа. Когда выражение функции создается в типизированном контексте, Dart пытается вывести типы параметров функции на основе ожидаемого типа. Например, когда вы передаете выражение функции в Iterable.map()
, тип параметра вашей функции выводится на основе типа обратного вызова, который ожидает map()
:
// Хорошо
var names = people.map((person) => person.name);
// Плохо
var names = people.map((Person person) => person.name);
Если язык может вывести нужный тип параметра в выражении функции, то не аннотируйте.
В редких случаях окружающий контекст недостаточно точен, чтобы предоставить тип для одного или нескольких параметров функции. В этих случаях вам может понадобиться аннотировать.