Angular 什么';这张有棱角的';关于括号的陈述?

Angular 什么';这张有棱角的';关于括号的陈述?,angular,Angular,在阅读有关Angular的文章时,我遇到了这样一种说法: 别忘了括号。忽略它们会导致难以诊断的错误 真的吗 什么错误 为什么很难诊断 在什么情况下,诊断会很困难 在诊断错误时,所有的编辑都是平等的吗 为了避免那个神秘的错误,需要括号吗 问题够多了 更新: 作为表达式调用时无法解析类装饰器的签名。提供的参数与调用目标的任何签名都不匹配 尽管这是我得到的错误,但这真的是所谓的“难以诊断”的错误吗?摘自:,指的是组件声明后括号的必要性。我想这对可注射装饰器也同样有效 示例中的组件函数根本不是装饰器

在阅读有关Angular的文章时,我遇到了这样一种说法:

别忘了括号。忽略它们会导致难以诊断的错误

  • 真的吗
  • 什么错误
  • 为什么很难诊断
  • 在什么情况下,诊断会很困难
  • 在诊断错误时,所有的编辑都是平等的吗
  • 为了避免那个神秘的错误,需要括号吗
问题够多了

更新

作为表达式调用时无法解析类装饰器的签名。提供的参数与调用目标的任何签名都不匹配

尽管这是我得到的错误,但这真的是所谓的“难以诊断”的错误吗?

摘自:,指的是组件声明后括号的必要性。我想这对可注射装饰器也同样有效

示例中的组件函数根本不是装饰器,它是 装饰厂。也就是说,它只是一个函数,你可以 调用,可能传递一个参数,该参数返回 通过@syntax应用于目标


在GitHub的Typescript问题部分有一些关于这方面的讨论:这是以前提出的,后来被拒绝了。根据建议()之后第一条评论的用户所说,decorator和decorator工厂是有区别的,后者需要括号。考虑到“decorator”是以接近它们的下一个东西作为参数的函数,因此需要通过()调用它们是有意义的。最有可能的是,在这一点被写下来的时候,ts还没有聪明到足以抱怨丢失的()。作为angular/visual studio代码的当前版本,编译器会抱怨()是否不存在
import { Injectable } from '@angular/core';

@Injectable()
export class HeroService {
}