我有一组常数,看起来像

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,因此从分析器收到警告将非常好。在所有可能的情况下,都不应出现请求不存在的字段的情况。

如何以最简单的方式解决此任务?

最佳答案

一种方法是设置一个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,则不会抛出此错误。

Can I Use?

10-07 12:16
查看更多