是否有在构建时和运行时在函数中强制执行参数的最佳实践方法?例如,如果我有以下功能:
function localize(strings, key, ...args) {
return ...
}
我这样调用它:
var result = localize('myKey')
我没有传递第一个参数('strings')。我想抛出一个编译错误,而不是等到运行时才得到错误。
最佳答案
因为 Javascript 没有编译,并且是动态类型的,所以除了在运行时之外,没有办法在您的示例中强制执行契约(Contract)。
但是,您可以使用 Typescript、Flow 等构建系统为您的代码添加类型注释。这些需要一个编译步骤,但是您在示例中遇到的问题会在该步骤中被两者捕获。
据我所知,如果没有它,就无法获得您想要的东西。在 vanilla javascript 中,您可以做的最好的事情是验证在 localize
函数中提供的参数,并使用日志/错误,以便在本地测试代码时可以轻松识别问题。这里重要的一点是,如果不实际运行您的代码,就无法使用 vanilla JS 捕获示例中的错误。
关于javascript - 编译时需要函数参数检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46853274/