Typescript: неправильная проверка типов для функции, которая возвращает void - PullRequest
0 голосов
/ 27 марта 2020

Может ли кто-нибудь объяснить мне, почему код, который я написал ниже, не различает guish следующих двух типов:

[1] () => void (тип функции, который не требует аргументы ничего не возвращают)

[2] () => () => void (функция, которая не принимает аргументов и возвращает функцию, которая не принимает аргументов и ничего не возвращает).

Например:

const function2 = (): () => void => {
  return (): void => {};
};

export const function1 = (arg: () => void): void => {
  console.log(arg);
};

function1(function2); // Should NOT pass type checker as the return type is not void
function1(function2()); // Should pass type checker

Или, может, кто-нибудь объяснит мне, как заставить function1(function2) выдать ошибку компиляции Typescript.

1 Ответ

0 голосов
/ 27 марта 2020

Функция function1 не обрабатывает результат (void не может быть обработан) функции arg. Поэтому компилятор позволяет функциям возвращать что-то. Если вы сделаете arg функцией, возвращающей некоторый обрабатываемый результат, она также предупредит в случае передачи функции, возвращающей другую функцию с правильным типом возврата.

...