microsoft / microsoft/TypeScript

TS7: `@extends` is ignored when the heritage is a call expression (Base.extend())

Ouverte
#64,058 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Bug
Langage dominant
Go
Étoiles
111k
Forks
14.3k
Merge moyen
2 j 4 h
PR mergées (30 j)
132

Description

### 🔎 Search Terms

`extends js TS7 jsdoc`

nothing seemed directly related

### 🕗 Version & Regression Information

```
"typescript-7": "npm:typescript@7.1.0-dev.20260826.1"
```

### ⏯ Playground Link

https://github.com/NullVoxPopuli-ai-agent/typescript-go-jsdoc-extends-call-heritage

### 💻 Code

https://github.com/NullVoxPopuli-ai-agent/typescript-go-jsdoc-extends-call-heritage

```js
// @ts-check

/**
* @template T
*/
class Base {
/** @returns {T} */
get value() {
throw new Error();
}
/** @returns {typeof Base} */
static extend() {
return this;
}
}

/** @extends {Base} */
class ViaCall extends Base.extend() {}

/** @extends {Base} */
class ViaIdentifier extends Base {}

/** @type {string} */
const a = new ViaIdentifier().value; // ok in both

/** @type {string} */
const b = new ViaCall().value; // error in TS 7 only
```

### 🙁 Actual behavior

```
Version 7.1.0-dev.20260826.1
repro.js:18:23 - error TS8026: Expected Base type arguments; provide these with an '@extends' tag.

18 class ViaCall extends Base.extend() {}
~~~~~~~~~~~~~

Found 1 error in repro.js:18
```

### 🙂 Expected behavior

no error in TS7

### Additional information about the issue

_No response_

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la reproduction liée et son exemple repro.js, puis exécutez-la avec le build TypeScript 7.1.0-dev cité afin de confirmer le diagnostic TS8026 sur ViaCall. Comparez le cas d’héritage Base.extend() avec le cas fonctionnel de l’identifiant Base et localisez le traitement de JSDoc @extends impliqué. C’est terminé lorsque le cas d’expression d’appel ne produit aucune erreur, tandis que le comportement existant reste intact.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, typescript
Domaine
compilers
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
68/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.