microsoft / microsoft/TypeScript

TypeScript not enforcing the return type of optional methods defined in interfaces implemented by parents of classes

Ouverte
#30,954 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

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

Description

TypeScript Version: 3.5.0 (Also tried 3.4.1, 3.0.1, and 2.4.1)

Search Terms: Inheritance, interface, return type, parent, child, override, overload, abstract, optional method, optional interface, implements, extends

Code

interface Mx {
  aMethod?(): number;
}

abstract class Base implements Mx {

}

class Child extends Base {
  public aMethod() {
    return 'hello world';
  }
}

Expected behavior:
TypeScript tells me that the return type for Child#aMethod is wrong.

This behaviour is achieved if I add implements Mx on the Child class.

Actual behavior:
TypeScript tells me nothing! It feels that Child#aMethod is well within its rights to return a string.

Playground Link: linky!

Related Issues: I didn't really find any similar looking issues?

The result is this could maybe relate to #22815

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 reproduire l’exemple dans le TypeScript Playground lié, puis comparez-le avec la version dans laquelle Child implémente explicitement Mx. Le travail est terminé lorsque TypeScript signale le type de retour string incompatible pour Child#aMethod sans nécessiter la clause implements redondante.

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

Évaluation

Stack technique
typescript
Domaine
compilers
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

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