при ломающих изменениях должна вылетать ошибка, а не тихо меняться проведение
Никто не запрещает кидать исключение, если предикат вернул не boolean. А если речь идёт о TS|Flow, то там тем более ошибка будет видна до запуска. Ведь старая сигнатура предполагает наличие undefined (можно и без, но тогда смысл filterMap теряется, поэтому кейсы когда при старый сигнатуре функция будет возвращать только boolean, мы не встретим).