我有一组常量,看起来像
let codes = {
OPEN_ACCOUNT: 1000,
CLOSE_ACCOUNT: 1001,
DEPOSIT_FUNDS: 3000
...
}
有时会重命名,添加或删除密钥,因此codes
对象的结构会发生变化。由于应用程序非常庞大,我很乐意使用JSLint / TSLint等工具对代码进行静态分析,以便在函数运行时使用不再可用的代码:
runServerRequest(codes.DEPOSIT_FUNDS_SPECIAL_CASE, 500)
在上面的示例中,代码对象中不存在DEPOSIT_FUNDS_SPECIAL_CASE
,因此从分析器发出警告会很棒。在所有可能的情况下,不应该是在请求不存在的字段时的情况。
我如何以最简单的方式解决这个问题?
答案 0 :(得分:1)
这样做的一种方法是设置一个Proxy
object,如果你访问一个不存在的属性,它将抛出:
// define codes above this line.
codes = new Proxy(codes, {
get: function(target, prop) {
if (!target.hasOwnProperty(prop)) {
throw new Error('Attempting to use the deleted code `' + prop + '`.');
}
return target[prop]
}
});
get
method会捕获对code.some_property
的所有访问,如果未定义,则抛出。{
请注意,如果该属性已明确设置为undefined
,则将不会抛出。