microsoft / microsoft/TypeScript
Make standard library types more polyfills‑friendly
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
A significant number of ECMAScript / web standards features that have recently standardized (like [`Iterator.concat`](https://github.com/tc39/proposal-iterator-sequencing)) are still missing from the TypeScript standard library. There are ECMAScript proposals (like [`Iterator.zip`](https://github.com/tc39/proposal-joint-iteration)) that are supported by modern browsers but still lack corresponding type definitions. Finally, many projects intentionally target older TypeScript versions with old standard library types.
I am working on types for the [`core-js` polyfill library](https://github.com/zloirock/core-js), which is used on most websites, so it makes a lot of sense to add type definitions for it. While doing this work, I have encountered some significant issues:
- Some DOM types, for example `URL`, are declared as ambient variable declarations with type literals in `lib.dom.d.ts`. This approach does not allow declaration merging. *Possible solution:* define them via interfaces (like in ECMAScript types) to allow declaration merging.
- The use of getters/setters. For example, [`ArrayBuffer` defines the detached property via a getter](https://github.com/microsoft/TypeScript/blob/3fc1f264de2aacae0c008eb4295e66833ade36d9/src/lib/es2024.arraybuffer.d.ts#L28). This makes it impossible to create a compatible polyfill type for different targets. Similar issues often cause conflicts between different type libraries. In most similar cases, accessors are declared as readonly properties, and this does not cause any problems.
If there were some mechanism for conditional type usage, it could make the standard types more polyfills‑friendly.
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 examiner les déclarations ambiantes dans lib.dom.d.ts et l’accesseur d’ArrayBuffer dans src/lib/es2024.arraybuffer.d.ts, ainsi que le contexte lié de core-js et de la proposition ECMAScript. Le travail sera terminé lorsqu’un mécanisme convenu rendra les types de la bibliothèque standard compatibles avec les polyfills et les cibles de bibliothèque TypeScript plus anciennes, avec les modifications correspondantes de la bibliothèque.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, typescript
- Domaine
- compilers
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100