javascript - 防止 Javascript 无错调用 Typescript

标签 javascript typescript error-handling

假设,我正在使用 Typescript 编写一个库。有一个具有以下签名的函数-

function check(value: "YES"|"NO"): boolean

因此,当从其他值为“YES”或“NO”的其他 typescript 文件调用此函数时,将出现编译错误。但是如果从 Javascript 文件调用,不会有错误,因为 Javascript 没有类型信息。我可以检查函数中的无效值并抛出错误。但是 Typescript 提供的类型安全对我来说似乎只是一种幻想。

在这种情况下,作为库开发人员我应该怎么做?使用纯 JavaScript?像 Angular 这样的团队做了什么?

最佳答案

这就是构建时(compile-time)和运行时错误检查的区别。 TypeScript 仅帮助您进行构建时检查。为您的库提供 TypeScript 定义文件将帮助您的用户在错误使用您的库时遇到有意义的编译时错误。

如果您的库直接由 JavaScript 使用,您将没有构建步骤来通知用户,您将不得不求助于运行时消息传递。如果文件大小不是问题,我建议抛出一条有意义的错误消息:

function (check) {
  if (check != "YES" && check != "NO") 
    throw new Error("Invalid Check Value: " + check);
  ...
}

如果您担心文件大小,最好对无效调用不进行任何操作。或者有某种合理的默认值。这将取决于您的情况。

您还可以考虑提供错误消息的库的“调试”构建,但将它们从缩小的发布构建中排除。

关于javascript - 防止 Javascript 无错调用 Typescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38456120/

相关文章:

javascript - asp.net按钮点击不起作用

asp.net-mvc - .NET MVC 5 中的 Angular 6 应用程序, Angular 路由不起作用

r - stopifnot()对于…中的一个表达式失败,并且不起作用,正如我期望的那样。我的期望正确吗?

php - 如何检查是否已设置自定义异常处理程序?

php - 为用户显示适当的错误消息

javascript - 通过 svg 路径滚动移动图像

javascript - ColdFusion 和 AJAX - 更新数据库

Angular - Observables 组合结果多次调用

javascript - Web 应用程序控制台错误 : firebase-auth. js :1 Uncaught Error: Cannot instantiate firebase-auth - be sure to load firebase-app. js 首先

java - 将 TypeScript 转换为 Java