169 похожих чатов

А где тут ошибочность вывода? ты сам компилятору сказал что ты

умный и явно объявил тип аргумента sayHello(user: { firstName: string, lastName: string })
если стереть тип (и как раз ипользовать вывод) то компилятор сразу подскажет в чем неправ

2 ответов

4 просмотра

правильно, я определил что метод принимает объект у которого должны быть такие-то поля (firstName и lastName), но почему-то при вызове user.sayHello({ firstName: "vasya" }) тайпскрипт не видит что лишнего поля не хватает

вот я убрал лишний, код чтобы явно показать ошибочность вывода - в этом примере function getUserGreetings(user: { sayHello(user: { firstName: string }): string }) { user.sayHello({firstName: ""}) } getUserGreetings({ sayHello(user: { firstName: string, lastName: string }): string { return user.lastName } }) тайпскрипт не показывает ошибку (чтение поля lastName которого не передали) даже если включить все флаги строгости. Но достаточно заменить метод на стрелочную функцию sayHello: (user: { firstName: string }) => string так сразу покажет ошибку function getUserGreetings(user: { sayHello: (user: { firstName: string }) => string }) { user.sayHello({firstName: ""}) } getUserGreetings({ sayHello(user: { firstName: string, lastName: string }): string { return user.lastName.toUpperCase(); } }) Type '(user: { firstName: string; lastName: string; }) => string' is not assignable to type '(user: { firstName: string; }) => string'. Types of parameters 'user' and 'user' are incompatible. Property 'lastName' is missing in type '{ firstName: string; }' but required in type '{ firstName: string; lastName: string; }'. кароче это известная проблема с бивариантными параметрами методов, мне просто интересно - они по прежнему ее не решили или не придумали никаких ли фич которые решают этот баг с выводом параметров у метода?

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
9
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Карта сайта