microsoft / microsoft/TypeScript
Declaring index signature based on property type gives invalid error
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
TypeScript Version: latest, demonstrable on playground (links below)
Search Terms: index signature diagnostics property type
Code:
interface BaseNode {
kind: string;
[key: string]: string | TokenNode["data"];
}
interface TokenNode extends BaseNode {
kind: 'token';
data: TokenData;
}
interface TokenData {
offset: number;
width: number;
leading_width: number;
trailing_width: number;
}
Expected behavior:
No errors, as the code is correct.
Actual behavior:
An error on interface TokenNode:
Interface 'TokenNode' incorrectly extends interface 'BaseNode'.
Index signature is missing in type 'TokenNode'.
HOWEVER if I change TokenNode["data"] to its value TokenData, the error goes away.
Playground Link:
Code above displaying the error
Code above with the fix, no errors
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
Reproduisez les deux exemples TypeScript Playground liés, en comparant la forme indexed-access avec la forme TokenData équivalente. Suivez le comportement de la vérification des types pour les déclarations des interfaces BaseNode et TokenNode ; le travail est terminé lorsque la version indexed-access ne signale plus l’erreur d’héritage invalide, tandis que le cas valide existant reste exempt d’erreur.
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é
- Clairement spécifiée
- Accessibilité débutants
- 35/100