Function TypeScript中错误抛出函数的签名

Function TypeScript中错误抛出函数的签名,function,typescript,error-handling,signature,throws,Function,Typescript,Error Handling,Signature,Throws,有并没有一种最佳实践方式,可以在TypeScript中用函数抛出错误的信息来标记函数 在Java中,人们会用错误注释函数的签名。这不适用于TypeScript 我理解代码不需要运行,但就我而言,当函数签名已经告诉我这些信息时,它是更干净的代码 对于你们如何处理这种情况的合理建议,我们将不胜感激。您的函数应该返回一个。这是表示异步操作最终完成或失败的自然方式 这仅适用于异步函数。在我看来,最好的做法是根本不从同步函数抛出异常 访问文件、数据库和网络服务——这些应该是异步的 参数超出范围-这通常不是

有并没有一种最佳实践方式,可以在TypeScript中用函数抛出错误的信息来标记函数

在Java中,人们会用错误注释函数的签名。这不适用于TypeScript

我理解代码不需要运行,但就我而言,当函数签名已经告诉我这些信息时,它是更干净的代码


对于你们如何处理这种情况的合理建议,我们将不胜感激。

您的函数应该返回一个。这是表示异步操作最终完成或失败的自然方式

这仅适用于异步函数。在我看来,最好的做法是根本不从同步函数抛出异常

访问文件、数据库和网络服务——这些应该是异步的

参数超出范围-这通常不是javascript中的错误:来自空数组的pop返回未定义的,具有无效范围的子字符串返回空字符串,这在IMO中是一件好事-它会在调用方中产生更干净的代码

参数为null-compile并启用-strictNullChecks,则您可以依赖于从不传递null的调用方

堆栈溢出,内存不足-这些不是显式抛出的,声明它们没有意义,因为任何函数都可能在Java中抛出它们,这些是运行时异常,也没有检查


还有什么东西可以保证从同步函数中抛出异常吗?如果是的话,我认为在该语言中获得明确支持的情况太少了。

不幸的是,该语言中没有任何支持。我为它打开了一个问题:。欢迎您对此发表评论和投票。OP在哪里谈到了异步?@artem您的回答对我的问题是一个有价值的贡献,尽管我没有注意异步函数和同步函数之间的区别。对我来说,返回看起来比Java类函数复杂得多签名另外,我确实认为,将隐式问题/错误传递给调用函数而不是抛出错误不会导致更干净的调用方代码,相反。如果一个人不再将错误视为必须处理的不必要的障碍,而是将其视为有价值的信息,那么管理良好的错误将成为你的朋友。调用方可以处理正常的逻辑,而无需进行空检查和类似的事情。它所要做的就是捕获它应该知道的错误。我的观点是,如果一个错误被认为是一个“有价值的信息”,那么最好将其表示为一个正常的返回数据类型—typescript具有非常适合这里的联合类型。异常是指异常错误。如果语言允许抛出然后使用try/catch,那么为什么要使用带有类型保护的if/else来理解返回的内容呢?