首页 > 解决方案 > 将函数返回值限制为 void

问题描述

bar预计是一个没有返回值的函数:

let foo = () => 'foo';
let bar: () => void = foo; // produces no error

可以bar防止分配与预期() => void签名不匹配的功能吗?

例如,在这种情况下:

declare let jsApiThatShouldNeverAcceptTypeofFoo = (bar: () => void) => void;
jsApiThatShouldNeverAcceptTypeofFoo(bar);

标签: typescript

解决方案


不,因为 void 返回函数可分配给值返回函数。另一方面,如果您期望一个 void 返回函数,则不能使用返回值。IE

let foo = () => 'foo';
let bar: () => void = foo; // produces no error

const result = bar(); // foo in runtime, TypeScript thinks it's void
const upper = result.toUpperCase(); // compile error

推荐阅读