【问题标题】:Cannot assign to 'initialState' because it is a read-only property无法分配给“initialState”,因为它是只读属性
【发布时间】:2019-11-24 17:30:03
【问题描述】:

在方法中运行时,无法在构造函数中分配只读属性,

打字稿版本是 3.4.1

class Example {
   readonly initialState: any
   constructor(){
      this.someMethod()
   }
   private someMethod(){
     this.initialState = 'someState'
   }

}

【问题讨论】:

  • 在构造函数中只能分配只读字段。

标签: typescript


【解决方案1】:

readonly 属性只能是initialized in place during declaration, or inside the constructor。这里的基本原理是,该方法可能会从代码中的其他位置调用,并尝试再次设置属性值,因此 TypeScript 会完全阻止它。

附言。我相信代码只是没有正确复制和粘贴,因为您的课程中没有 setState() 方法;你的代码不会运行。我假设您想说this.initialState = 'someState' 之类的话。如果您想修改您的问题,可能会有不同的答案。

【讨论】:

  • 有没有办法在方法中运行它?我正在使用(this.initialState as any) = 'someState' ,但我想知道有没有更好的方法来处理它?
  • 没有。这违背了使用readonly 的目的。您不妨允许写入,但将其设置为 private
猜你喜欢
  • 1970-01-01
  • 2020-11-17
  • 2021-01-22
  • 1970-01-01
  • 2018-12-07
  • 2018-10-14
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
相关资源
最近更新 更多