microsoft / microsoft/TypeScript

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

Open Beginner friendly
#63,427 8 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Bug Domain: lib.d.ts Help Wanted Needs Human Review
Dominant language
Go
Stars
111k
Forks
14.3k
Avg merge
2d 4h
Merged PRs (30d)
132

Description

---

### Bug report

#### 📝 Description

`Math.sumPrecise` is part of the [TC39 `proposal-math-sum`](https://github.com/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`:

```typescript
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;
}
```

#### 🔗 Related
- TC39 Proposal: https://github.com/tc39/proposal-math-sum
- Stage 4 meeting notes: https://github.com/tc39/notes/blob/main/meetings/2025-07/july-28.md#mathsumprecise-for-stage-4
- MDN Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sumPrecise
- Firefox 137+: shipped
- Safari 18.4 (JavaScriptCore): shipped
- Bun: shipped
- V8 / Node.js / Chrome: not yet

---

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in lib.esnext.math.d.ts and compare the declaration needed for Math.sumPrecise with the linked TC39 proposal and existing Math definitions. The work is complete when the Math interface exposes sumPrecise with the documented iterable-of-number signature and TypeScript accepts calls without an augmentation or error suppression.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, typescript
Domain
tooling
Issue type
Feature
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
84/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.