código:
constructor(cdr: ChangeDetectorRef, inj: Injector) { super(cdr, inj); }eslint:
{ ... overrides: { ... rules: { ... "@typescript-eslint/no-useless-constructor": "error", ... } } } Esta regla me dice que elimine el constructor inútil, pero debo llamar a super() adentro.
¿Cómo puedo omitir esta regla sin deshabilitarla o eliminarla?
Simplemente elimine el constructor. No es necesario definirlo si no tiene más uso. Para su clase extendida, es lo mismo que un constructor vacío. Es inútil ya que JavaScript/TypeScript lo maneja automáticamente. Ver documentos .
Si no proporciona su propio constructor, se le proporcionará un constructor predeterminado. ... Si su clase es una clase derivada, el constructor predeterminado llama al constructor principal y pasa los argumentos que se proporcionaron.
Entonces, sí, los constructores de clases derivadas deben contener una superllamada. Pero no necesariamente tiene que definir un constructor vacío o simplemente super dentro (clases derivadas). A menos que desee agregar más o una firma diferente.
Si aún desea mantenerlo, simplemente elimine o deshabilite la regla linter.
Hay una advertencia para saber:
Esta regla de pelusa informará sobre los constructores cuyo único propósito es cambiar la visibilidad de un constructor principal. -- TS Docs también ver ES Docs
Angular puede necesitar este constructor "inútil" con súper llamada para, por ejemplo, Inyectable y Constructor (clases derivadas). Esto puede causar el error: This constructor is not compatible with Angular Dependency Injection because its dependency at index 0 of the parameter list is invalid. En este caso, la regla eslint debe estar deshabilitada.