SonarQube 显示 'remove this useless assignment to local variable'

SonarQube displaying to 'remove this useless assignment to local variable'

为什么 SonarQube 给出这个错误?我该如何解决?他们的规则页面没有指定解决方案,

Remove this useless assignment to local variable "validateAddressRequest".

  validateAddress() {
    if (this.propertySitusMailingForm.valid) {
      let validateAddressRequest: ValidateAddressRequest = new ValidateAddressRequest();
      let propertySitusData = new PropertySitusAddress(this.propertySitusMailingForm.value);
      validateAddressRequest = convertToValidateRequest(propertySitusData);
      this.validationService.validateCall(validateAddressRequest);
    }
  }

This site says 错误发生在:

A value is assigned to a variable or property, but either that location is never read later on, or its value is always overwritten before being read. This means that the original assignment has no effect, and could indicate a logic error or incomplete code.

if 块的第一行,你分配给 validateAddressRequest,但随后在 if 块的第三行,你覆盖了 validateAddressRequest 没有读取了先前分配的变量。所以第一行没用。

仅在调用 convertToValidateRequest 时声明 validateAddressRequest

const validateAddressRequest = convertToValidateRequest(propertySitusData);

请注意,您几乎肯定不需要类型注释 - 如果 Typescript 已经知道 convertToValidateRequest returns 和 ValidateAddressRequest,则无需再次使用新的多变的。如果您认为其他方面不清楚,或者如果您没有类型 Intellisense,则可以这样做,但它可能只是噪音。

如果您使用 let 声明变量以便将来能够对其赋值,请记住最好尽可能避免重新赋值,并且几乎总是可以避免重新赋值。如果你需要另一个包含 ValidateAddressRequest 的变量,给它一个不同的变量名,这样你就可以使用 const 来声明两个变量;这使得代码一目了然,当 reader 可以确定某个特定的变量引用永远不会被重新分配时。