如果您的代码是类型安全的,您是否需要错误处理?

Do you need error handling if your code is typesafe?

如果您编写了一些类型安全且不使用第三方库的 TypeScript 代码,您是否仍然需要错误处理,只是因为谁知道会发生什么?

是的,你知道。有些错误不是由不安全代码引起的。例如,从服务器获取数据时可能会发生错误。

是的。并非所有错误都是 type-related。例如,假设您有一个从端点执行(比方说)fetch 的函数。再多的类型信息也无法改变您需要处理请求可能失败的可能性这一事实。同样,如果通知一堆事件的侦听器,再多的类型信息也无法保护您免受其中一个侦听器意外抛出错误的影响。

我想说的是,自从我主要切换到 TypeScript 以来,我没有改变我所做的错误处理的数量或我做的级别(主要是事件处理程序等入口点)。我已经减少了我做的 type-checking 的数量(如果参数类型说它必须是,我不验证函数中的某些东西是 number一个数字,我可能已经在 JavaScript 中完成了),但不是 错误处理的数量

TypeScript 有助于验证代码库本身的一致性,但您的系统(网络应用程序或其他任何东西)具有与外部世界的接口。当您在 TypeScript 中指定这些接口时,它断言实际接口将符合其 TypeScript 描述,但在代码运行时根本无法保证。

此外,TypeScript 不会验证您使用的算法。作为一个简单的例子,它不会阻止您将数字除以零。它也不会验证递归函数是否具有正确的退出条件,等等。

总而言之,TypeScript 可以帮助您更快地提出 type-related 错误(甚至在执行代码之前),但这并不能减轻您在需要时进行正确错误处理的负担。