microsoft / microsoft/TypeScript

TS 5.4.5: Return type for performance.getEntriesByType is inaccurate

Ouverte
#58,644 5 commentaires 11 réactions 2 personnes assignées Voir sur GitHub

@RyanCavanaugh y travaille déjà.

Depuis le 19/9/2026.

  • #64338 par @copilot-swe-agent — ouverte
Bug Domain: lib.d.ts Help Wanted Needs Human Review
Langage dominant
Go
Étoiles
111k
Forks
14.4k
Merge moyen
1 j 19 h
PR mergées (30 j)
117

Description

⚙ Compilation target

ESNexr

⚙ Library

lib.dom.d.ts

Missing / Incorrect Definition

The return type for getEntriesByType is a union of many different object types. A list can be seen in the spec, or at https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry ("The PerformanceEntry instances will always be one of the following subclasses:: [List of possibel sub-classes]")

The return type can - and I think should - be hard-coded for the respective string parameter to getEntriesByType, since there is a limited short list of possible string constants, and each corresponds exactly to one possible return type. Maybe an overloaded definition for this function?

Right now the return type is set to PerformanceEntryList, which is PerformanceEntry[], and that type is an interface with only the minimal number of entries.

The effect is that when I use, for example, performance.getEntriesByType('navigation'), I get a TypeScript error trying to access the properties on the PerformanceNavigationTiming array I get from that query.

Sample Code

Playground Link

function pageWasRealoaded(): boolean {
    return performance
        .getEntriesByType('navigation')
        // Error: TS2339: Property type does not exist on type PerformanceEntry
        // This is wrong, because this is a PerformanceNavigationTiming object
        .some(entry => entry.type === 'reload');
}
Documentation Link

https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry

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.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

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