Почему ts не ругается на отсутствие аргумента?

TypeScript не ругается на отсутствие аргумента в определенных случаях из-за наличия функций с необязательными аргументами и параметрами по умолчанию.

TypeScript позволяет определять функции, у которых аргументы не являются обязательными. Это делается путем указания знака "?" после имени аргумента в определении функции. Например:

function foo(bar?: number) {
  // код функции
}

В таком случае, аргумент bar будет иметь тип number | undefined, то есть он может быть числом или не определенным значением (undefined). Если аргумент не будет передан при вызове функции, его значение будет undefined.

Помимо необязательных аргументов, TypeScript также позволяет задавать параметры по умолчанию для функций. Это делается путем присваивания значения параметру в его определении. Например:

function foo(bar: number = 0) {
  // код функции
}

В данном случае, если аргумент bar не будет передан при вызове функции, его значение будет равно 0.

Если функция имеет необязательный аргумент или параметр со значением по умолчанию, TypeScript не будет ругаться на отсутствие аргумента при вызове функции, так как это соответствует ожидаемому поведению. Однако, если функция имеет обязательный аргумент без значения по умолчанию и аргумент не был передан при вызове функции, TypeScript выдаст ошибку компиляции.

Важно отметить, что TypeScript не ругается на отсутствие аргументов в функции только при наличии необязательных аргументов или параметров по умолчанию. Если все аргументы функции являются обязательными и не имеют значения по умолчанию, то TypeScript будет ругаться на отсутствие любого из аргументов при вызове функции.