Bug: [unbound-method] False reports on class property with `this: void`

Author: JoshuaKGoldbergCreated Sep 15, 2026Updated Sep 15, 2026
Labelsbugpackage: eslint-pluginaccepting prs

Before You File a Bug Report Please Confirm You Have Done The Following...

  • I have tried restarting my IDE and the issue persists.
  • I have updated to the latest version of the packages.
  • I have searched for related issues and found none that matched my issue.
  • I have read the FAQ and my problem is not listed.
  • If I used AI assistance to prepare this issue, I have reviewed and followed the AI Contribution Policy.

Playground Link

https://typescript-eslint.io/play/#ts=6.0.2&fileType=.ts&code=MYGwhgzhAECiAeYC2AHEBTaBvAUNaKATgPYrqEAuAntALzQBmArgHbAUCWxL0AFBQAsOEAFzQAbsQ4ATAJTYAvgG4cCnDhboA7nESoMvWQDoipctSVA&eslintrc=N4KABGBEBOCuA2BTAzpAXGUEKQAIBcBPABxQGNoBLY-AWhXkoDt8B6WJgIwHsOATWgFtE%2BABbc%2B6KImjRu0SODABfEMqA&tsconfig=N4KABGBEDGD2C2AHAlgGwKYCcDyiAuysAdgM6QBcYoEEkAhqqrAO4BSZlemArugDTgakEl2TQ8AOW6MAwgAt00ANYcwXXoIC%2BITUA&tokens=false

Repro Code

typescript
class Example {
  property = function (this: void) {};
}

new Example().property;

ESLint Config

javascript
module.exports = {
  "rules": {
    "@typescript-eslint/unbound-method": "error"
  }
}

tsconfig

jsonc
{
  "compilerOptions": {
    "allowJs": true,
    "strictNullChecks": true
  }
}

Expected Result

No rule report, since the property has this: void.

Actual Result

A method that is not declared with this: void may cause unintentional scoping of this when separated from its object. Consider using an arrow function or explicitly .bind()ing the method to avoid calling the method with an unintended this value. 5:1 - 5:16

Additional Info

Discovered as part of #12803 (what a tangent!). A fix is in draft in #12886.

Source: typescript-eslint/typescript-eslint