编译时需要的函数参数检查

时间:2017-10-20 16:20:04

标签: javascript

在构建时与运行时相比,是否有在函数中强制执行参数的最佳实践方法?例如,如果我有以下功能:

    function localize(strings, key, ...args) {

        return ...
    }

我这样称呼它:

    var result = localize('myKey')

我没有传递第一个参数('strings')。我想抛出一个编译错误,而不是等到运行时才能得到错误。

1 个答案:

答案 0 :(得分:1)

由于Javascript未编译和动态输入,因此除非在运行时,否则无法在示例中强制执行合同。

但是,您可以使用像Typescript,Flow等构建系统来为代码添加类型注释。这些都需要编译步骤,但是在这个步骤中,你的示例中的问题都会被捕获。

如果没有这个,就我所知,没有办法得到你想要的东西。你可以在vanilla javascript中做的最好的事情是验证你在localize函数中给出的参数,并使用日志/错误,以便在本地测试代码时轻松识别问题。这里重要的一点是,如果没有实际运行代码,就无法使用vanilla JS捕获示例中的错误。