microsoft / microsoft/TypeScript
Extend JSDoc @this to JavaScript class - apply @this to every non-static method
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
Let a node.js JavaScript (cjs) module:
// global .d.ts
declare class FooTS { tsProp: string; }
// xxx.js
// Goal: let intellisense treat class Foo's 'this' to fake class FooTS
// /** @this {FooTS} */ => currently this is invalid
class Foo {
/** @this {FooTS} */
constructor() { this.jsProp = 123; };
/** @this {FooTS} */
bar() { return this.tsProp; }
}
@this works for class methods, but it is verbose to add @this to every method.
It would be a QoL improvement to allow @this apply to JavaScript class with the effect that it apply @this to every non-static method.
This is probably invalid in original JSDoc, and doesn't make much sense.
But in vscode, it makes sense because user can use Typescript .d.ts for (more powerful and less verbose) type declaration for JavaScript implementation.
Alternatively, a more aggressive QoL could be that introduce a new tag to treat Foo type as FooTS type globally.
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
L’issue ne nomme aucun fichier d’implémentation, test ou point d’entrée. Commencez par localiser la gestion existante de @this de JSDoc dans TypeScript et les vérifications des méthodes de classe JavaScript, puis examinez les tests associés. C’est terminé lorsqu’un @this au niveau de la classe peut fournir le type this à chaque méthode non statique sans nécessiter d’annotations répétées sur les méthodes.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, node.js, typescript
- Domaine
- compilers, developer-experience
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100