машинописный карри с параметрами по умолчанию - PullRequest
2 голосов
/ 09 июля 2019

Почему у нас не может быть параметров по умолчанию в функции карри в Typescript.

Рассмотрим следующий пример:

function add(a: number): (b: number, c:number = 0) => number {
                                     ^^^^^^^^^^^^
    return function(b: number, c: number = 0): number {
        return a + b + c;
    }
} 

add(10)(5); //I want to call like this

Подчеркнута часть ошибки.

Инициализатор параметров разрешен только в реализации функции или конструктора.

Это то, что говорит Линтер.Если это так, есть ли способ иметь параметры по умолчанию для функции карри?

1 Ответ

2 голосов
/ 09 июля 2019

Важно помнить, что когда вы объявляете функцию 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;
    };
}
...