【问题标题】:Property not found in this在此找不到属性
【发布时间】:2017-07-12 18:44:39
【问题描述】:

我有一个类,我在构造函数中声明了几个属性。

class DevModuleLookup {
  constructor() {
    this.kGlobal = 'z'
    this.kHelpMessage = '...'
  }

  ...
}

我收到一个流错误

property `kGlobal`. Property not found in DevModuleLookup

我可以使用类属性,但它们仍然是第 2 阶段的 ATM,在它们达到第 3 阶段之前我无法使用它们。

有什么建议吗?

【问题讨论】:

  • 认为即使关闭了这些标志,您也可以在课堂上做kGlobal: string; 吗?你只是不能分配一个值,例如kGlobal: string = 'z';。我目前无法验证自己。
  • 我想留在第 3 阶段及以上。类属性仍处于第 2 阶段。
  • 为类体中的属性赋值是第 3 阶段,但是将带有类型注释的属性放入类体中只是 Flow,同样: number 其他任何地方都只是 Flow。跨度>
  • 由于某种原因,我的 webpack 构建总是失败,因为我对类属性缺少转换而大喊大叫。开发服务器运行得很好。
  • 您需要安装并激活 Babel 的 flow 预设,听起来您还没有这样做。那么当你将它们添加到类主体时它会进行类型检查吗?

标签: flowtype


【解决方案1】:

为了让您的代码进行类型检查,您需要在类主体中声明类型,例如

class DevModuleLookup {
  kGlobal: string;
  kHelpMessage: string;

  constructor() {
    this.kGlobal = 'z'
    this.kHelpMessage = '...'
  }
}

Flow 通过允许在类主体中命名属性,为 ES 类采用了部分提议的类属性语法。

即使你自己不想使用类属性,因为它们是一个提案而不是官方语言的一部分,你仍然可以在没有= ... 赋值的情况下使用上面的注释,它们只会被剥离与 Babel 删除任何其他 Flow 类型注释的方式相同(假设您已启用 flow 预设)。

【讨论】:

  • 除了这个答案之外,babel 预设的顺序很重要。预设排在第一位,我的预设环境排在第二位,它在 webpack 构建中抛出了错误。 - stackoverflow.com/questions/38620375/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 2021-05-19
  • 1970-01-01
相关资源
最近更新 更多