Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноЗакончили урок?
Войдите, чтобы отмечать прогресс
Две детали. Во-первых, Handler теперь честно описывает обработчик: один строковый параметр, результата нет. Во-вторых, аннотацию у event в стрелочной функции можно убрать: тип приходит из Handler через контекстную типизацию.
Директива стала осмысленной: onClick(123) действительно ошибка, потому что обработчик ждёт строку. Комментарий её подавляет, и файл компилируется.
Полезно понимать разницу с соседней директивой:
@ts-ignore глушит ошибку, если она есть, и молчит, если её нет;@ts-expect-error глушит ошибку и требует, чтобы она была.Вторая безопаснее: когда код починят и ошибка исчезнет, директива сама подсветится как лишняя и не останется в проекте навсегда.
Совпадать должны позиции и типы, а не названия. Имя в типе нужно только для читаемости и подсказок редактора.
TypeScript разрешает подставить функцию, которая принимает меньше аргументов:
Это то же правило, что позволяет писать arr.forEach(() => {}), не объявляя индекс и массив. Обратное запрещено: функция, требующая больше параметров, чем объявлено в типе, не подойдёт.