microsoft / microsoft/TypeScript
Provide a `this` type for `get`/`set` methods in `Reflect.defineProperty` options
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
Code
var A: {a?: number, b: number} = {b:2}
Reflect.defineProperty(A, 'a', {
// set(this: any, value: any) { // to fix
set(value: any) {
console.log(this.b); // Property 'b' does not exist on type 'PropertyDescriptor'.
},
enumerable: true,
configurable: true
});
A.a = 1;
// expect the context of setter is A
Expected behavior:
expect the context of the setter is A
Actual behavior:
Property 'b' does not exist on type 'PropertyDescriptor'.
Playground Link:
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 Playground lié et comparez le this inféré du setter avec le type de récepteur attendu. Suivez les options de Reflect.defineProperty et les typages de PropertyDescriptor, puis ajoutez une couverture pour l’exemple dans une zone de tests existante appropriée. C’est terminé lorsque le contexte du setter est typé comme l’objet cible sans l’erreur signalée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100