2017-10-20 83 views
0

是否有一个在构建时与运行时间的函数中强制参数的最佳实践方式?例如,如果我具有以下功能:编译时所需的功能参数检查

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

     return ... 
    } 

和我人称其为这样:

var result = localize('myKey') 

我没有通过第一个参数(“字符串”)。我想抛出一个编译错误,不要等到运行时才会出错。

+1

你是什么意思? Javascript不是一种编译语言,所以没有可能发生错误的“构建时间”。除非你使用Typescript等东西? – CRice

+0

你说得很对,措辞不妙。我正在用es6构建一个反应应用程序。有没有办法强制正确数量的参数传递给函数,然后在运行时捕获它?如果答案是否定的,这是不可能的,因为它没有编译我接受。我只是想确保没有一些好的方法来做到这一点,我不知道。谢谢。 – johnsontroye

回答

1

,因为JavaScript不会被编译,而动态类型,有没有办法强制执行你的榜样合同,除了在运行时。

但是,您可以使用一个构建系统,如打字稿,流量等,对类型标注添加到您的代码。这需要一个编译步骤,但是在你的例子中你遇到的问题会在这个步骤中被两个方法所捕获。

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