передано меньше, чем указано в типе? Это немного странно... Ведь, если больше, то ошибку он выдает все-таки...
declare type A = {
foo(number): void,
}
const ex1: A = {
foo(a) {}
} // количество аргументов равно указанному в типе - ok
const ex2: A = {
foo() {}
} // количество аргументов меньше, чем указано в типе - ok??? why?
const ex3: A = {
foo(a,b) {}
} // количество аргументов больше, чем указано в типе - не ok!
https://vk.cc/8RoHPH - сократил ссылку
Была как-то статья про это. Не помню от кого, но от кого-то из TS-тусовки, как бы даже не от дядюшки Андерса. Так вот в той статье рассуждалось о том, что лучше не юзать перегрузки, потому что JS предоставляет возможность вызывать функцию с произвольным количеством аргументов и обрабатывать внутри функции произвольное количество аргументов: даже если их объявлено два, по факту мы может работать с пятью, например, и наоборот. И вот там говорилось о том, что в TS сознательно пошли на решение оставить это поведение из JS. Поэтому если сигнатура типа имеет 10 аргументов, а сигнатура функции по факту <= 10, но что важно, все имеющиеся типы аргументов совпадают, то всё норм.
Обсуждают сегодня