防止Javascript调用Typescript而不会出错

假设,我正在用Typescript编写一个库.有一个具有以下签名的功能 –

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

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

在这种情况下,作为图书馆开发人员,我该怎么办?使用纯JavaScript? Angular的团队做了什么?

最佳答案 这是构建时(编译时)和运行时错误检查之间的区别. TypeScript仅帮助您进行构建时检查.在库中提供TypeScript定义文件将帮助用户在错误地使用lib时获得有意义的编译时错误.

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

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

如果您担心文件大小,可能最好只是无效调用无操作.或者有某种明智的默认.这取决于你的情况.

您还可以考虑提供错误消息的库的“调试”版本,但将其从缩小版本构建中排除.

点赞