microsoft / microsoft/TypeScript
--noImplicitAny codefixes infer anonymous object types despite appropriate interfaces in (or out of) scope
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.3.0-dev.20181212
Search Terms: noimplicitany infer code fix codefix quick suggested
Code
interface IBox {
x: number;
y: number;
}
const shiftBox = (box) => {
box.x += 1;
box.y += 1;
}
const box = {
x: 0,
y: 0,
};
shiftBox(box);
Expected behavior:
--noImplicitAny suggested fix on the box parameter:
const shiftBox = (box: IBox) =>
Actual behavior:
const shiftBox = (box: { x: any; y: any; }) => {
Related Issues: #13243 (parent tracking quick fixes) and #15114 (discussion on inference difficulties)
If there is an interface available that can satisfy an inferred type in a --noImplicitAny code fix, can we use that? Perhaps with an ordering of possibilities like:
- Interfaces already available in the file, by how small they are
- User-defined interfaces that could be imported, by how distant the file is
- Module types already imported in a user file, by how distant the nearest import is
...where, if multiple interfaces could satisfy the best possibility of those three, we choose the one with the fewest fields?
In code bases that don't explicitly type when unnecessary (e.g. : IBox for variables), I'm finding the --noImplicitAny fixes to be a bit useless for anything other than primitives.
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 l’exemple TypeScript fourni et reproduisez la sortie du codefix --noImplicitAny. Lisez la discussion dans les issues associées #13243 et #15114 afin de comprendre les règles proposées de sélection d’interface ; le travail est considéré comme terminé lorsqu’une interface disponible compatible telle que IBox est préférée à un type d’objet anonyme sans casser les autres cas de codefix.
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é
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 32/100