5

Typescript拒绝通过调用来缩小范围失败但会缩小范围失败2这是打字中的错误吗?

常量失败=(消息?:字符串):从不=>{抛出新错误(消息);};函数fail2(消息?:字符串):从不{抛出新错误(消息);}const getData=():字符串|空=>{返回“数据”;}export const loadDataOrError=():string=>{const数据=getData();if(数据===空){//交换下面的选项,看它是否有效//故障2();失败();}//这个错误返回数据;};

在这里如果你想尝试切换注释并看到错误消失,这是一个游乐场。

清晰的屏幕截图
有一个错误

有一个错误

没有错误

没有错误

4
  • 1
    即使失败可以重新分配,新值仍将返回从未所以这不是一个好理由。在您的示例中,您使用作为这在设计上是不合理的,所以很明显你会有奇怪的行为。 评论 2023年2月26日18:35
  • 同意@GuillaumeBrunerie也别忘了这是一个常数所以整个论点是站不住脚的
    – 扎奇亚
    评论 2023年2月26日18:37
  • 我认为你应该提出一个问题。这不正常。
    – 杰弗里
    评论 2023年2月26日19:52
  • 刚刚找到问题。我想我会回答我自己的问题
    – 扎奇亚
    评论 2023年2月26日20:53

1答案1

重置为默认值
6

根据open GitHub问题这是类型收缩目前在typescript中工作方式的一个限制。如果您想纠正它,可以这样显式地注释箭头函数类型:

常量失败:(消息?:字符串)=>从不=(消息)=>{引发新错误(消息)}
1
  • 1
    是的,这都是关于你正在调用的东西的显式类型注释。对于断言函数来说,这是一个相当恼人的限制。 评论 2023年2月26日22:07

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.