microsoft / microsoft/TypeScript
type for Function.prototype.bind wrongly preserves fields on a function
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
When calling bind on a function Javascript does not copy the properties across that have been added to that function, however TS treats them as having been copied.
TypeScript Version: 3.7-Beta
Search Terms: function bind
Code
const a = () => { }
a.hello = 'hi'
const b = a.bind({})
b.hello.split("") // Uncaught TypeError: Cannot read property 'split' of undefined
Expected behavior: hello field should not be present on typeof b.
Actual behavior: hello is deemed to exist on typeof b and the program crashes.
Related Issues: https://github.com/Microsoft/TypeScript/issues/212 seems to be where this was discussed and finally implemented, although it's not directly related.
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 le lien vers TypeScript Playground et reproduisez l’exemple de bind présenté avec la version de TypeScript indiquée. Comparez le type inféré de b avec le comportement à l’exécution de JavaScript ; le travail est terminé lorsque le champ hello ajouté est rejeté pour typeof b, tandis que le comportement valide de bind reste pris en charge.
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é
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 38/100