А зачем мы типизируем функцию, которую присваиваем переменной c?? Выходит, что у переменной c объявлен тип (в виде стрелочной функции с неявным возвратом), которая уже типизирована и у которой уже есть правильная сигнатура, а затем мы вновь, для переменной c описываем функцию с сигнатурой. Выходит, что мы повторно создаём новую функцию с новой сигнатурой. Если функция привязана к конкретной сигнатуре, то для присвоенной функции, наверно уместнее такой описание: let c: (x: number, y: number): number => number; c = function(x, y){ return x + y}. Или я в чём-то ошибаюсь? Ну, chat gpt выдаёт такую информацию. Возможно, она не верна. Если кто-то это прочтёт, пожалуйста, подскажите.
@whicencer88193 жыл бұрын
Спасибо за ваши уроки. Один вопрос возникает. Как на практике используются перегрузки, и зачем они вообще нужны?
@codeBurger3 жыл бұрын
Я сам их не использую, и не видел чтобы другие использовали
@Retruntobase3 жыл бұрын
В библиотеке Redux например, если взглянете на исходники
@ДенисЧумак-ъ5щ4 жыл бұрын
Добрый вечер. Возник вопрос. let ax = function (h: number): number { return 1; } function foo3(a: number, callback: (init: number) => void) { let t = callback(a); console.log(t); } foo3(5555,ax); //1 не смотря на то, что согласно сигнатуре (callback возвращает void) , callback все равно вернет число ? как то странно
@codeBurger4 жыл бұрын
Привет, TS проверяет только типы let t = callback(a); Так как у t не задан тип, он не считает ошибкой вернуть из функции тип void в переменную t
@ДенисЧумак-ъ5щ4 жыл бұрын
@@codeBurger , вы говорите : вернуть из функции тип void в переменную t. но void насколько я знаю из жс это undefined. а он возвращает единицу. Вот это как то у меня не укладывается в голове. просто в жс если я напишу let t=void 1 , то t будет undefined. а в примере выше в t попадает 1
@chingis0913 жыл бұрын
@@ДенисЧумак-ъ5щ Если функция в параметре имеет тип void, то ей неявно присваивается тип any, поэтому если колбэк-функция все равно возвращает что-то, то компилятор не будет выдавать ошибку. Проверка на void происходит только при объявлении функции