打字稿:返回void的函数的类型检查不正确

时间:2020-03-27 15:48:05

标签: typescript typescript-typings

有人可以向我解释为什么我下面编写的代码似乎不能区分以下两种类型:

[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 :(得分:0)

函数function1无法处理void函数的结果(无法处理arg)。因此,编译器允许函数返回某些内容。如果使arg成为函数返回一些可处理的结果,则在传递函数返回另一个具有正确返回类型的函数的情况下也会发出警告。