microsoft / microsoft/TypeScript
TypeScript not enforcing the return type of optional methods defined in interfaces implemented by parents of classes
Personne n'a encore pris cette issue.
- 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
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- 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