Использование Newtonsoft.Json: в вашем методе Global.asax Application_Start добавьте эту строку:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
Как указывает @jcalz в комментарии, метод defaultArguments
возвращает либо function
, либо string
.
В тот момент, когда вы пишете код ...
console.assert(add2(10) === 19);
компилятор совершенно правильно отмечает ошибку, потому что в этот момент вы не знаете, какой из двух возможных типов add2
есть.
Если вы добавите дополнительную проверку типа в свой код, компилятор будет уверен, что вы работаете со значением типа function
, и скомпилируется без ошибки.
if (typeof(add2) === 'function')) {
console.assert(add2(10) === 19);
console.assert(add2(10, 7) === 17);
console.assert(isNaN(add2()));
} else {
console.error(add2);
}