Комментарии 2
Если неявный nullability это ошибка на миллиард долларов, то контекст функций в JS это ошибка где-то на 100000 баксов. Это же нисколько не нормально, что сохранив ссылку на, казалось бы, метод объекта, на самом деле мы получаем ссылку на unbound функцию. Вот пример для иллюстрации:
const arr = [1, 2, 3];
arr.map(v => v * v); // ок
const arrMap = arr.map;
arrMap(v => v * v); // не ок: TypeError: can't convert undefined to object
Благо завезли стрелочные функции которые хоть как-то спасают ситуацию.
Какая-то проблема из прошлого, если честно.
Потеря контекста во вложенных функциях окончательно решена стрелочными функциями, и в 2025м году нет никакого смысла рассматривать что-то ещё.
Потеря контекста при сохранении метода где-то ещё решается ещё проще - "не делайте так!". Это ответственность внешнего кода - следить с каким контекстом вызываются методы.
Комбинированный вариант, когда метод используется внутри класса, решается либо опять-таки стрелочными функциями, либо декоратором (благо они наконец-то уже в stage 3).
Как уменьшить боль от this в классах javascript