【问题标题】:TypeScript infers void instead of never on function statementTypeScript 在函数语句中推断 void 而不是 never
【发布时间】:2020-12-22 18:23:23
【问题描述】:

如果 foo 是不返回的函数表达式的结果,TypeScript 会推断出 () => never

const foo = function () {
  throw new Error();
}

但是void如果foo是一个函数语句:

function foo() {
  throw new Error();
}

我不明白。有解释就好了。

【问题讨论】:

  • 不同的语法不同的行为? ??????‍♀️虽然很奇怪
  • tldr:向后兼容。如果推断类中的函数返回never,则子类无法提供返回其他内容的实现。

标签: typescript


【解决方案1】:

documentation中找到解释。

“Never 是总是抛出异常或永不返回的函数表达式或箭头函数表达式的返回类型”

如果分配引发错误,则永远不会分配 const foo。

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 2018-11-19
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2017-12-04
    • 2021-03-12
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多