TypeScript - 将布尔值作为 void 函数返回的函数

2024-03-06

如示例中所示,如果我有一个 void 函数的类型定义,则返回布尔值的函数将通过该类型检查。

这是一个错误还是有正当理由?有解决方法吗?

type ReturnsVoid = () => void

type ReturnsNumber = () => number

const a: ReturnsVoid = () => { }

// Surprisingly there is no error
const b: ReturnsVoid = () => { return false; } 

// Error - expected
const c: ReturnsNumber = () => { return false; }

// Error - expected
const d: void = false;

That's intended https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-functions-returning-non-void-assignable-to-function-returning-void行为。

另一种思考方式是,返回 void 的回调类型表示“我不会查看您的返回值(如果存在)”。

如果在您的情况下这是可接受的替换,您可能会得到一个返回未定义的类型:

type ReturnsUndefined = () => undefined

type ReturnsNumber = () => number

const a: ReturnsUndefined = () => undefined

const b: ReturnsUndefined = () => { return false; } // error

const c: ReturnsNumber = () => { return false; } // error

游乐场链接 https://tsplay.dev/we0l1W

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript - 将布尔值作为 void 函数返回的函数 的相关文章

随机推荐