在构建时与运行时相比,是否有在函数中强制执行参数的最佳实践方法?例如,如果我有以下功能:
function localize(strings, key, ...args) {
return ...
}
我这样称呼它:
var result = localize('myKey')
我没有传递第一个参数('strings')。我想抛出一个编译错误,而不是等到运行时才能得到错误。
答案 0 :(得分:1)
由于Javascript未编译和动态输入,因此除非在运行时,否则无法在示例中强制执行合同。
但是,您可以使用像Typescript,Flow等构建系统来为代码添加类型注释。这些都需要编译步骤,但是在这个步骤中,你的示例中的问题都会被捕获。
如果没有这个,就我所知,没有办法得到你想要的东西。你可以在vanilla javascript中做的最好的事情是验证你在localize
函数中给出的参数,并使用日志/错误,以便在本地测试代码时轻松识别问题。这里重要的一点是,如果没有实际运行代码,就无法使用vanilla JS捕获示例中的错误。