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

Mac*_*zyk 7 typescript

如示例中所示,如果我有一个 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;
Run Code Online (Sandbox Code Playgroud)

操场

ale*_*xor 2

这是预期的行为。

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

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

type ReturnsUndefined = () => undefined

type ReturnsNumber = () => number

const a: ReturnsUndefined = () => undefined

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

const c: ReturnsNumber = () => { return false; } // error
Run Code Online (Sandbox Code Playgroud)

游乐场链接