microsoft / microsoft/TypeScript

Add type definition for Math.sumPrecise (ES2025 / TC39 proposal)

Ouverte Adaptée aux débutants
#63,427 8 commentaires 3 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Bug Domain: lib.d.ts Help Wanted Needs Human Review
Langage dominant
Go
Étoiles
111k
Forks
14.3k
Merge moyen
2 j 4 h
PR mergées (30 j)
132

Description


Bug report
📝 Description

Math.sumPrecise is part of the TC39 proposal-math-sum which reached Stage 4 on 2025-07-28, making it part of ES2026 (not ES2025 as originally stated — the proposal missed the ES2025 cutoff by about one month). Major runtimes like Bun, Firefox 137+, and Safari 18.4 have already implemented it, though V8/Node.js has not yet.

However, TypeScript does not include type definitions for this API — searching through all lib.es*.d.ts files yields no results for sumPrecise.

🐛 The problem

This causes a compile error:

Property 'sumPrecise' does not exist on type 'Math'. ts(2339)

Users are forced to either:

  • Use workarounds like type augmentation (global.d.ts)
  • Fall back to @ts-expect-error
  • Use incorrect alternatives like Array.reduce((a, b) => a + b) which lose precision
✅ Expected behavior

The interface Math should be extended in lib.esnext.math.d.ts:

interface Math {
    /**
     * Returns the sum of the values in the iterable using a more precise
     * summation algorithm than naive floating-point addition.
     * Returns `-0` if the iterable is empty.
     * @param numbers An iterable (such as an Array) of numbers.
     * @throws {TypeError} If `numbers` is not iterable, or if any value in the iterable is not of type `number`.
     * @throws {RangeError} If the iterable yields 2^53 or more values.
     */
    sumPrecise(numbers: Iterable<number>): number;
}
🔗 Related

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

Commencez dans lib.esnext.math.d.ts et comparez la déclaration nécessaire pour Math.sumPrecise avec la proposition TC39 liée et les définitions existantes de Math. Le travail est terminé lorsque l’interface Math expose sumPrecise avec la signature documentée d’un itérable de nombres et que TypeScript accepte les appels sans augmentation ni suppression d’erreur.

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

Évaluation

Stack technique
javascript, typescript
Domaine
tooling
Type d'issue
Fonctionnalité
Difficulté
2/5
Temps estimé
1-3 heures
Activité
Active
Clarté
Clairement spécifiée
Accessibilité débutants
84/100

Recevez les nouvelles issues par e-mail

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