【问题标题】:Check presence of object property during bulding phase在构建阶段检查对象属性的存在
【发布时间】:2016-05-27 16:29:53
【问题描述】:

我正在寻找可以帮助我实现这一目标的解决方案:

如果我尝试这样做,我希望在“构建”时抛出错误:

var ciao = {
  wow: 'ciaoooo',
}

console.log(ciao.wowe); // this should be an error because the prop does not exist

我已经尝试过 Typescript 并且它可以完成工作,但仅为此使用它似乎有点矫枉过正。我想知道 ESLint 是否有什么东西可以帮助我解决这类问题。

【问题讨论】:

    标签: javascript webpack babeljs eslint


    【解决方案1】:

    您要求的是静态类型语言的功能。如果您想要关于构建时变量的可靠信息,您将需要这种定义接口和类型的“矫枉过正”。但是,TypeScript 是可选类型的,如果您希望公共接口使用静态类型,这可能是一个很好的折衷方案。

    如果您想要类型检查但又不想使用转译器,您也可以尝试Flow,它会尽可能地从您的代码中获取类型信息。但是,它在没有额外类型信息的情况下的功能非常有限。

    关于您的实际问题:我认为可以使用 ESLint 或 Babel 在模块(或文件)边界内派生类型信息。只要您在这些边界内使用该对象,静态分析就可能对您有所帮助。但除此之外,由于 JavaScript 的动态特性,我认为它并不可靠。不幸的是,我不知道这样的规则或插件。

    【讨论】:

      【解决方案2】:

      ESLint 没有这样的规则。很难创建一个能够捕获所有可能情况的规则。 ESLint 依赖 Escope 来跟踪声明的变量,但 Escope 不跟踪对象的属性,而且向声明的对象添加属性的方法太多了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-29
        • 1970-01-01
        • 1970-01-01
        • 2020-11-30
        • 2018-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-27
        相关资源
        最近更新 更多