【问题标题】:Unused expression, expected an assignment or function call (Angular)未使用的表达式,需要赋值或函数调用 (Angular)
【发布时间】:2020-11-25 20:28:59
【问题描述】:

我正在 Angular 中制作注册表单。 我想检查我是否有用户的用户名,如果它不为空,则将该值传递给对象。

loadData(data: User) {
    data.username && (this.registrationData.username = data.username.trim());  
}

我收到此错误: 未使用的表达式,需要赋值或函数调用(no-unused-expression)

【问题讨论】:

  • 通过避免if 语句来节省字面上的两个字符的狂热是什么?只有在这种情况下,您才不会保存任何内容,因为您需要 &&(),它们的长度与 if() 的长度相同。

标签: javascript angular typescript


【解决方案1】:

它告诉您不要滥用&& 来代替if。相反,使用:

if (data.username) {
  this.registrationData.username = data.username.trim();
}

或者,考虑:

const trimmed = data.username.trim();
if (trimmed) {
  this.registrationData.username = trimmed;
}

【讨论】:

  • 没有if有没有办法使用?
  • @urosmladenovic 为什么?您那里没有一个表达式,那么避免该语句的原因是什么?
  • 这是可能的,但这是个坏主意,因为避免使用if 会掩盖代码的意图并使其更难阅读。这就是存在 linting 规则的原因。如果您想避免在.js 中向客户端发送字符,请将其留给自动 缩小器,同时尽可能保持源代码可读性。
【解决方案2】:

这是一个常见的tslint rule,要求您不要留下未使用的表达式(即产生结果的语句)。

您可以像这样使用if 语句:

loadData(data: User) {
    if (data.username) {
        this.registrationData.username = data.username.trim();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-26
    • 2015-05-22
    • 2020-03-30
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2023-03-26
    相关资源
    最近更新 更多