Skip to content

Exception when rxjs/no-implicit-any-catch enabled #132

@mudcovered

Description

@mudcovered

An unhandled exception occurred: Cannot destructure property 'typeAnnotation' of 'typeAnnotation' as it is undefined.

An example of the code that is triggering this for me is:

    of(undefined).subscribe({
      error: (error) => {
        console.log(error);
      },
    });

This is in an angular 17 typescript project using the following eslint config:

{
  "root": true,
  "ignorePatterns": ["projects/**/*"],
  "env": {
    "browser": true
  },
  "overrides": [
    {
      "files": ["*.ts"],
      "parserOptions": {
        "project": ["tsconfig.json"],
        "createDefaultProgram": true
      },
      "plugins": ["prettier", "import-x", "deprecation", "rxjs"],
      "extends": [
        "plugin:@angular-eslint/recommended",
        "plugin:@typescript-eslint/recommended",
        "plugin:@typescript-eslint/strict",
        "plugin:import-x/recommended",
        "plugin:import-x/typescript",
        "plugin:@angular-eslint/template/process-inline-templates",
        "plugin:rxjs/recommended",
        "eslint:recommended"
      ],
      "settings": {
        "import-x/resolver": {
          "typescript": true,
          "node": true
        }
      },
      "rules": {
        "@angular-eslint/directive-selector": [
          "error",
          {
            "type": "attribute",
            "prefix": "app",
            "style": "camelCase"
          }
        ],
        "@angular-eslint/component-selector": [
          "error",
          {
            "type": "element",
            "prefix": "app",
            "style": "kebab-case"
          }
        ],
        "@typescript-eslint/no-unused-vars": [
          "error",
          {
            "vars": "all",
            "args": "all",
            "argsIgnorePattern": "^_",
            "ignoreRestSiblings": true
          }
        ],
        "no-unused-vars": "off",
        "@typescript-eslint/no-var-requires": "error",
        "@typescript-eslint/await-thenable": "error",
        "@typescript-eslint/explicit-member-accessibility": "error",
        "@typescript-eslint/no-floating-promises": [
          "error",
          { "ignoreVoid": false }
        ],
        "camelcase": "error",
        "@typescript-eslint/no-use-before-define": [
          "error",
          { "functions": false, "classes": true, "variables": true }
        ],
        "@typescript-eslint/return-await": "error",
        "no-return-await": "error",
        "sort-imports": [
          "error",
          {
            "ignoreCase": true,
            "ignoreDeclarationSort": true
          }
        ],
        "import-x/no-cycle": "error",
        "import-x/no-extraneous-dependencies": "error",
        "import-x/order": [
          "error",
          {
            "groups": [
              ["builtin", "external"],
              "internal",
              "parent",
              "sibling",
              "index"
            ],
            "alphabetize": {
              "order": "asc",
              "caseInsensitive": true
            }
          }
        ],
        "@typescript-eslint/no-unnecessary-type-assertion": "error",
        "prefer-object-spread": "error",
        "prefer-template": "error",
        "consistent-return": "error",
        "id-denylist": [
          "error", // eslint error
          // keyword blacklist!
          "any",
          "Number",
          "number",
          "String",
          "string",
          "Boolean",
          "boolean",
          "Undefined"
          // 'undefined' false positive on let x = undefined
        ],
        "semi": 2,
        "eqeqeq": "error",
        "no-shadow": "error",
        "one-var": ["error", "never"],
        "deprecation/deprecation": "warn"
      }
    },
    {
      "files": ["*.html"],
      "extends": ["plugin:@angular-eslint/template/recommended"],
      "rules": {}
    },
    {
      "files": ["*.module.ts", "*.component.ts"],
      "rules": {
        "@typescript-eslint/no-extraneous-class": "off"
      }
    },
    {
      "files": ["*.spec.ts"],
      "env": {
        "jasmine": true
      }
    }
  ]
}

package.json versions of lint packages:

    "@typescript-eslint/eslint-plugin": "^7.2.0",
    "@typescript-eslint/parser": "^7.2.0",
    "eslint": "^8.57.0",
    "eslint-import-resolver-typescript": "^3.6.3",
    "eslint-plugin-deprecation": "^2.0.0",
    "eslint-plugin-import-x": "^4.2.1",
    "eslint-plugin-prettier": "^5.1.2",
    "eslint-plugin-rxjs": "^5.0.3",

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions