Microsoft/TypeScript

Property is not assignable to the same property in generic base type

Open

#61,918 opened on Jun 23, 2025

View on GitHub
 (2 comments) (0 reactions) (0 assignees)TypeScript (48,455 stars) (6,726 forks)batch import
BugDomain: check: Variance RelationshipsHelp Wanted

Description

🔎 Search Terms

Property is not assignable to the same property in generic base type

🕗 Version & Regression Information

-This is the behavior in every version I tried, and I reviewed

⏯ Playground Link

https://www.typescriptlang.org/zh/play/?ts=5.8.3#code/IYIwzgLgTsDGEAJYBthjAgSgCwPYIG8AoBBUSGeBABwEsATAc1oDswAeAMQH0BRBAKYAPCAJb0MLAK4BbEAKgAaBDwBSAPgAUIKFLABHKQMgAuFd1UIAPud4BKM2uu2A3EQC+RFGgwAhZFIAZoEKgiJiElh4hCQ0DMxsXHxhouKSsvJK5hraugZGptnOPPaOFsXJscSkpFACEFJQLKQ6eobGEG6knp5AA

💻 Code

abstract class Rho {
  abstract pidgins<F_E extends number, F_J>(brusquest: F_J | F_E): F_J | F_E;
}
class Bluffer extends Rho {
  pidgins<F_E extends number, F_J>(brusquest: F_J | F_E): F_J | F_E 
  {
    return  brusquest;
  }
}

🙁 Actual behavior

Property 'pidgins' in type 'Bluffer' is not assignable to the same property in base type 'Rho'. Type '<F_E extends number, F_J>(brusquest: F_E | F_J) => F_E | F_J' is not assignable to type '<F_E extends number, F_J>(brusquest: F_E | F_J) => F_E | F_J'. Two different types with this name exist, but they are unrelated. Type 'number | F_E | F_J' is not assignable to type 'F_E | F_J'. Type 'number' is not assignable to type 'F_E | F_J'.(2416)

🙂 Expected behavior

No error

Additional information about the issue

The following works with no error:

abstract class Rho {
  abstract pidgins<F_E extends number, F_J>(brusquest: F_J | F_E): F_J | F_E;
  abstract pidgins<F_E extends number, F_J>(brusquest: F_J | F_E): F_J | F_E;
}
class Bluffer extends Rho {
  pidgins<F_E extends number, F_J>(brusquest: F_J | F_E): F_J | F_E 
  {
    return  brusquest;
  }
}

Contributor guide