Webstorm:"Must be lvalue" 是什么意思

Webstorm: What does "Must be lvalue" mean

在编写我的 angular 应用程序时,我收到此 "strange" 错误消息:

代码运行良好,但我找不到关于此错误消息的任何文档。这是什么意思?

代码来自: 这是一个接受的答案,有 15 票赞成。

代码:

<input placeholder="TEST"
       [ngModel]="phone_numbers && phone_numbers[0]?.full_number"
       (ngModelChange)="phone_numbers?.length && phone_numbers[0].full_number=$event">

错误信息:

Must be lvalue

Must be lvalue

这就是使用 JSAnnotator 进行 webstorm 检查的方式。

尝试使用以下代码创建简单的 js 文件:

let a,b;
a && b=1;

如果错误听起来像这样会更好:

ReferenceError: invalid assignment left-hand side

另见 issue

Webstorm 警告我们这段代码是异常情况,我们可能会写错,例如

if (a === 1 && b = 2) {
                 /\
   Seems it should be == or ===. 
   So it's easy to make such mistake like this

我们怎样才能抑制这个错误?

  • 按以下方式重写代码

(ngModelChange)="phone_numbers?.length ? phone_numbers[0]['full_number']=$event : null"
  • 抑制 input 元素的 JSAnnotator

<!--suppress JSAnnotator -->
<input placeholder="TEST"
       [ngModel]="phone_numbers && phone_numbers[0]?.full_number"
       (ngModelChange)="phone_numbers?.length && phone_numbers[0]['full_number']=$event">
   

同样,这只是一个警告,如何处理取决于您。