假设,我正在使用 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/