Возвращаемое значение Typescript или функция карри - PullRequest
0 голосов
/ 29 января 2019

Учитывая следующий код Typescript, я получаю сообщение об ошибке

TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'AddReturnType' has no compatible call signatures.

Почему AddReturnType не работает с этим вызовом?

type AddReturnType = number | ((arg0: number) => number);
function add(x: number, y?: number) : AddReturnType {
    if (!y) {
        return (val) => val + y;
    }
    return x + y;
}

add(1)(2);

1 Ответ

0 голосов
/ 29 января 2019

TypeScript не может определить, возвращаете ли вы number или функцию, и только один из двух вариантов может быть вызван.Разделите две подписи функций:

function add(x: number): (number) => number;
function add(x: number, y: number): number;
function add(x, y?) {
    if (!y) {
        return (val) => val + y;
    }
    return x + y;
}

add(1)(2);

Тем не менее, не должно ли это быть val + x?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...