В моем прошлом посте я писал о том, что типы функций проверяются недостаточно корректно и что для этого нужно использовать флаг strictFunctionTypes. Вы его включили и всё стало хорошо (нет). TypeScript не был бы TypeScript-ом, если бы не его некоторые решения по дизайну продиктованы JavaScript-ом и фронтендом в частности.
Проблема с этим флагом скрывается в том, что именно вы используете для объявления функций - method syntax или function syntax - это важно! Когда в TypeScript только начинали работать над этой возможностью языка, они начали очень часто замечать проблемы с "unsafe class hierarchies", особенно в DOM.
По итогу, это привело к тому, что TypeScript вынужден проверять корректность типов только для function syntax, для method syntax это не работает (уточню, не работает в строгом режиме).