microsoft / microsoft/TypeScript

__decorate helper should not use `this` when targeting modules

Ouverte
#35,802 0 commentaires 2 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Awaiting More Feedback Suggestion
Langage dominant
Go
Étoiles
111k
Forks
14.3k
Merge moyen
2 j 4 h
PR mergées (30 j)
132

Description

TypeScript Version: 3.7.x-dev.201xxxxx

Search Terms: __decorate this module

Code

class Foo {
  @property() x = 1;
}

Expected behavior:
Top-level this reference is not emitted.

Actual behavior:

The __decrate variable is declared like:

var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

Since top-level this is always undefined in modules, (this && this.__decorate) || can be omitted. It's only a few bytes, but the presence of top-level this also causes warnings in other downstream tools like Rollup.

A few other things could be fixed for an ES6+ helper, btw:

  • Use const instead of var (allows for some VM optimizations)
  • Remove Reflect.decorate
  • Don't use arguments

Playground Link: https://www.typescriptlang.org/play/?ts=Nightly#code/MYGwhgzhAEBiD29oG8BQ1oAEAOAne2AprgC4CeAFAJTQAe0AvNAIwDcqAvkA

Related Issues: None?

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez l’exemple du TypeScript Playground lié en utilisant la version 3.7.x-dev indiquée ou le compilateur actuel, et inspectez le helper __decorate émis. Suivez le point d’entrée du compilateur qui émet ce helper ; le travail est terminé lorsque la sortie du module ne contient plus la référence this au niveau supérieur, tandis que le comportement des décorateurs reste intact.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, typescript
Domaine
compilers
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
42/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.