Важно помнить, что когда вы объявляете функцию add
, (b: number, c:number = 0) => number
является типом возвращаемого значения - вы сообщаете компилятору, какие функции допустимы в качестве возвращаемого значения.Значения по умолчанию не являются частью типа, однако они являются частью реализации.
Наличие параметра, являющегося необязательным, является частью типа, однако, это допустимо:
function add(a: number): (b: number, c?: number) => number {
return function(b: number, c: number = 0): number {
return a + b + c;
};
}