From 3f568fe753905f4426011ac8c041d35ede7f36db Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 19 Sep 2026 01:45:17 +0000 Subject: [PATCH 1/2] Initial plan From 48a00d01a6588c8e084a1086cfb1efb64fff2a17 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 19 Sep 2026 02:00:42 +0000 Subject: [PATCH 2/2] Add overloads for Performance/PerformanceObserverEntryList getEntriesByType Co-authored-by: RyanCavanaugh <6685088+RyanCavanaugh@users.noreply.github.com> --- tsc/internal/bundled/libs/lib.dom.d.ts | 14 ++ tsc/internal/bundled/libs/lib.webworker.d.ts | 6 + .../compiler/performanceGetEntriesByType.js | 52 +++++++ .../performanceGetEntriesByType.symbols | 99 +++++++++++++ .../performanceGetEntriesByType.types | 133 ++++++++++++++++++ .../compiler/performanceGetEntriesByType.ts | 29 ++++ 6 files changed, 333 insertions(+) create mode 100644 tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.js create mode 100644 tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.symbols create mode 100644 tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.types create mode 100644 tsc/testdata/tests/cases/compiler/performanceGetEntriesByType.ts diff --git a/tsc/internal/bundled/libs/lib.dom.d.ts b/tsc/internal/bundled/libs/lib.dom.d.ts index 9e127c3f5a524..926edddde2b76 100644 --- a/tsc/internal/bundled/libs/lib.dom.d.ts +++ b/tsc/internal/bundled/libs/lib.dom.d.ts @@ -27506,6 +27506,13 @@ interface Performance extends EventTarget { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Performance/getEntriesByType) */ + getEntriesByType(type: "event"): PerformanceEventTiming[]; + getEntriesByType(type: "largest-contentful-paint"): LargestContentfulPaint[]; + getEntriesByType(type: "mark"): PerformanceMark[]; + getEntriesByType(type: "measure"): PerformanceMeasure[]; + getEntriesByType(type: "navigation"): PerformanceNavigationTiming[]; + getEntriesByType(type: "paint"): PerformancePaintTiming[]; + getEntriesByType(type: "resource"): PerformanceResourceTiming[]; getEntriesByType(type: string): PerformanceEntryList; /** * The **`mark()`** method creates a named PerformanceMark object representing a high resolution timestamp marker in the browser's performance timeline. @@ -27861,6 +27868,13 @@ interface PerformanceObserverEntryList { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/PerformanceObserverEntryList/getEntriesByType) */ + getEntriesByType(type: "event"): PerformanceEventTiming[]; + getEntriesByType(type: "largest-contentful-paint"): LargestContentfulPaint[]; + getEntriesByType(type: "mark"): PerformanceMark[]; + getEntriesByType(type: "measure"): PerformanceMeasure[]; + getEntriesByType(type: "navigation"): PerformanceNavigationTiming[]; + getEntriesByType(type: "paint"): PerformancePaintTiming[]; + getEntriesByType(type: "resource"): PerformanceResourceTiming[]; getEntriesByType(type: string): PerformanceEntryList; } diff --git a/tsc/internal/bundled/libs/lib.webworker.d.ts b/tsc/internal/bundled/libs/lib.webworker.d.ts index 45c6a6134821d..8e0f2d38b7d0f 100644 --- a/tsc/internal/bundled/libs/lib.webworker.d.ts +++ b/tsc/internal/bundled/libs/lib.webworker.d.ts @@ -8201,6 +8201,9 @@ interface Performance extends EventTarget { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Performance/getEntriesByType) */ + getEntriesByType(type: "mark"): PerformanceMark[]; + getEntriesByType(type: "measure"): PerformanceMeasure[]; + getEntriesByType(type: "resource"): PerformanceResourceTiming[]; getEntriesByType(type: string): PerformanceEntryList; /** * The **`mark()`** method creates a named PerformanceMark object representing a high resolution timestamp marker in the browser's performance timeline. @@ -8384,6 +8387,9 @@ interface PerformanceObserverEntryList { * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/PerformanceObserverEntryList/getEntriesByType) */ + getEntriesByType(type: "mark"): PerformanceMark[]; + getEntriesByType(type: "measure"): PerformanceMeasure[]; + getEntriesByType(type: "resource"): PerformanceResourceTiming[]; getEntriesByType(type: string): PerformanceEntryList; } diff --git a/tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.js b/tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.js new file mode 100644 index 0000000000000..103e9e462c649 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.js @@ -0,0 +1,52 @@ +//// [tests/cases/compiler/performanceGetEntriesByType.ts] //// + +//// [performanceGetEntriesByType.ts] +function pageWasReloaded(): boolean { + return performance + .getEntriesByType("navigation") + .some(entry => entry.type === "reload"); +} + +const marks = performance.getEntriesByType("mark"); +marks[0].detail; + +const measures = performance.getEntriesByType("measure"); +measures[0].detail; + +const paints = performance.getEntriesByType("paint"); +paints[0].startTime; + +const resources = performance.getEntriesByType("resource"); +resources[0].initiatorType; + +const events = performance.getEntriesByType("event"); +events[0].processingStart; + +const lcp = performance.getEntriesByType("largest-contentful-paint"); +lcp[0].renderTime; + +const generic = performance.getEntriesByType("something-unknown"); +generic[0].entryType; + + +//// [performanceGetEntriesByType.js] +"use strict"; +function pageWasReloaded() { + return performance + .getEntriesByType("navigation") + .some(entry => entry.type === "reload"); +} +const marks = performance.getEntriesByType("mark"); +marks[0].detail; +const measures = performance.getEntriesByType("measure"); +measures[0].detail; +const paints = performance.getEntriesByType("paint"); +paints[0].startTime; +const resources = performance.getEntriesByType("resource"); +resources[0].initiatorType; +const events = performance.getEntriesByType("event"); +events[0].processingStart; +const lcp = performance.getEntriesByType("largest-contentful-paint"); +lcp[0].renderTime; +const generic = performance.getEntriesByType("something-unknown"); +generic[0].entryType; diff --git a/tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.symbols b/tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.symbols new file mode 100644 index 0000000000000..ec79105f9ed0a --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.symbols @@ -0,0 +1,99 @@ +//// [tests/cases/compiler/performanceGetEntriesByType.ts] //// + +=== performanceGetEntriesByType.ts === +function pageWasReloaded(): boolean { +>pageWasReloaded : Symbol(pageWasReloaded, Decl(performanceGetEntriesByType.ts, 0, 0)) + + return performance +>performance .getEntriesByType("navigation") .some : Symbol(Array.some, Decl(lib.es5.d.ts, --, --)) +>performance .getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) +>performance : Symbol(performance, Decl(lib.dom.d.ts, --, --)) + + .getEntriesByType("navigation") +>getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) + + .some(entry => entry.type === "reload"); +>some : Symbol(Array.some, Decl(lib.es5.d.ts, --, --)) +>entry : Symbol(entry, Decl(performanceGetEntriesByType.ts, 3, 14)) +>entry.type : Symbol(PerformanceNavigationTiming.type, Decl(lib.dom.d.ts, --, --)) +>entry : Symbol(entry, Decl(performanceGetEntriesByType.ts, 3, 14)) +>type : Symbol(PerformanceNavigationTiming.type, Decl(lib.dom.d.ts, --, --)) +} + +const marks = performance.getEntriesByType("mark"); +>marks : Symbol(marks, Decl(performanceGetEntriesByType.ts, 6, 5)) +>performance.getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) +>performance : Symbol(performance, Decl(lib.dom.d.ts, --, --)) +>getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) + +marks[0].detail; +>marks[0].detail : Symbol(PerformanceMark.detail, Decl(lib.dom.d.ts, --, --)) +>marks : Symbol(marks, Decl(performanceGetEntriesByType.ts, 6, 5)) +>detail : Symbol(PerformanceMark.detail, Decl(lib.dom.d.ts, --, --)) + +const measures = performance.getEntriesByType("measure"); +>measures : Symbol(measures, Decl(performanceGetEntriesByType.ts, 9, 5)) +>performance.getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) +>performance : Symbol(performance, Decl(lib.dom.d.ts, --, --)) +>getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) + +measures[0].detail; +>measures[0].detail : Symbol(PerformanceMeasure.detail, Decl(lib.dom.d.ts, --, --)) +>measures : Symbol(measures, Decl(performanceGetEntriesByType.ts, 9, 5)) +>detail : Symbol(PerformanceMeasure.detail, Decl(lib.dom.d.ts, --, --)) + +const paints = performance.getEntriesByType("paint"); +>paints : Symbol(paints, Decl(performanceGetEntriesByType.ts, 12, 5)) +>performance.getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) +>performance : Symbol(performance, Decl(lib.dom.d.ts, --, --)) +>getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) + +paints[0].startTime; +>paints[0].startTime : Symbol(PerformanceEntry.startTime, Decl(lib.dom.d.ts, --, --)) +>paints : Symbol(paints, Decl(performanceGetEntriesByType.ts, 12, 5)) +>startTime : Symbol(PerformanceEntry.startTime, Decl(lib.dom.d.ts, --, --)) + +const resources = performance.getEntriesByType("resource"); +>resources : Symbol(resources, Decl(performanceGetEntriesByType.ts, 15, 5)) +>performance.getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) +>performance : Symbol(performance, Decl(lib.dom.d.ts, --, --)) +>getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) + +resources[0].initiatorType; +>resources[0].initiatorType : Symbol(PerformanceResourceTiming.initiatorType, Decl(lib.dom.d.ts, --, --)) +>resources : Symbol(resources, Decl(performanceGetEntriesByType.ts, 15, 5)) +>initiatorType : Symbol(PerformanceResourceTiming.initiatorType, Decl(lib.dom.d.ts, --, --)) + +const events = performance.getEntriesByType("event"); +>events : Symbol(events, Decl(performanceGetEntriesByType.ts, 18, 5)) +>performance.getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) +>performance : Symbol(performance, Decl(lib.dom.d.ts, --, --)) +>getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) + +events[0].processingStart; +>events[0].processingStart : Symbol(PerformanceEventTiming.processingStart, Decl(lib.dom.d.ts, --, --)) +>events : Symbol(events, Decl(performanceGetEntriesByType.ts, 18, 5)) +>processingStart : Symbol(PerformanceEventTiming.processingStart, Decl(lib.dom.d.ts, --, --)) + +const lcp = performance.getEntriesByType("largest-contentful-paint"); +>lcp : Symbol(lcp, Decl(performanceGetEntriesByType.ts, 21, 5)) +>performance.getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) +>performance : Symbol(performance, Decl(lib.dom.d.ts, --, --)) +>getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) + +lcp[0].renderTime; +>lcp[0].renderTime : Symbol(LargestContentfulPaint.renderTime, Decl(lib.dom.d.ts, --, --)) +>lcp : Symbol(lcp, Decl(performanceGetEntriesByType.ts, 21, 5)) +>renderTime : Symbol(LargestContentfulPaint.renderTime, Decl(lib.dom.d.ts, --, --)) + +const generic = performance.getEntriesByType("something-unknown"); +>generic : Symbol(generic, Decl(performanceGetEntriesByType.ts, 24, 5)) +>performance.getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) +>performance : Symbol(performance, Decl(lib.dom.d.ts, --, --)) +>getEntriesByType : Symbol(Performance.getEntriesByType, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --) ... and 3 more) + +generic[0].entryType; +>generic[0].entryType : Symbol(PerformanceEntry.entryType, Decl(lib.dom.d.ts, --, --)) +>generic : Symbol(generic, Decl(performanceGetEntriesByType.ts, 24, 5)) +>entryType : Symbol(PerformanceEntry.entryType, Decl(lib.dom.d.ts, --, --)) + diff --git a/tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.types b/tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.types new file mode 100644 index 0000000000000..92c5c4e73dcd7 --- /dev/null +++ b/tsc/testdata/baselines/reference/compiler/performanceGetEntriesByType.types @@ -0,0 +1,133 @@ +//// [tests/cases/compiler/performanceGetEntriesByType.ts] //// + +=== performanceGetEntriesByType.ts === +function pageWasReloaded(): boolean { +>pageWasReloaded : () => boolean + + return performance +>performance .getEntriesByType("navigation") .some(entry => entry.type === "reload") : boolean +>performance .getEntriesByType("navigation") .some : (predicate: (value: PerformanceNavigationTiming, index: number, array: PerformanceNavigationTiming[]) => unknown, thisArg?: any) => boolean +>performance .getEntriesByType("navigation") : PerformanceNavigationTiming[] +>performance .getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>performance : Performance + + .getEntriesByType("navigation") +>getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>"navigation" : "navigation" + + .some(entry => entry.type === "reload"); +>some : (predicate: (value: PerformanceNavigationTiming, index: number, array: PerformanceNavigationTiming[]) => unknown, thisArg?: any) => boolean +>entry => entry.type === "reload" : (entry: PerformanceNavigationTiming) => boolean +>entry : PerformanceNavigationTiming +>entry.type === "reload" : boolean +>entry.type : NavigationTimingType +>entry : PerformanceNavigationTiming +>type : NavigationTimingType +>"reload" : "reload" +} + +const marks = performance.getEntriesByType("mark"); +>marks : PerformanceMark[] +>performance.getEntriesByType("mark") : PerformanceMark[] +>performance.getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>performance : Performance +>getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>"mark" : "mark" + +marks[0].detail; +>marks[0].detail : any +>marks[0] : PerformanceMark +>marks : PerformanceMark[] +>0 : 0 +>detail : any + +const measures = performance.getEntriesByType("measure"); +>measures : PerformanceMeasure[] +>performance.getEntriesByType("measure") : PerformanceMeasure[] +>performance.getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>performance : Performance +>getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>"measure" : "measure" + +measures[0].detail; +>measures[0].detail : any +>measures[0] : PerformanceMeasure +>measures : PerformanceMeasure[] +>0 : 0 +>detail : any + +const paints = performance.getEntriesByType("paint"); +>paints : PerformancePaintTiming[] +>performance.getEntriesByType("paint") : PerformancePaintTiming[] +>performance.getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>performance : Performance +>getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>"paint" : "paint" + +paints[0].startTime; +>paints[0].startTime : number +>paints[0] : PerformancePaintTiming +>paints : PerformancePaintTiming[] +>0 : 0 +>startTime : number + +const resources = performance.getEntriesByType("resource"); +>resources : PerformanceResourceTiming[] +>performance.getEntriesByType("resource") : PerformanceResourceTiming[] +>performance.getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>performance : Performance +>getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>"resource" : "resource" + +resources[0].initiatorType; +>resources[0].initiatorType : string +>resources[0] : PerformanceResourceTiming +>resources : PerformanceResourceTiming[] +>0 : 0 +>initiatorType : string + +const events = performance.getEntriesByType("event"); +>events : PerformanceEventTiming[] +>performance.getEntriesByType("event") : PerformanceEventTiming[] +>performance.getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>performance : Performance +>getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>"event" : "event" + +events[0].processingStart; +>events[0].processingStart : number +>events[0] : PerformanceEventTiming +>events : PerformanceEventTiming[] +>0 : 0 +>processingStart : number + +const lcp = performance.getEntriesByType("largest-contentful-paint"); +>lcp : LargestContentfulPaint[] +>performance.getEntriesByType("largest-contentful-paint") : LargestContentfulPaint[] +>performance.getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>performance : Performance +>getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>"largest-contentful-paint" : "largest-contentful-paint" + +lcp[0].renderTime; +>lcp[0].renderTime : number +>lcp[0] : LargestContentfulPaint +>lcp : LargestContentfulPaint[] +>0 : 0 +>renderTime : number + +const generic = performance.getEntriesByType("something-unknown"); +>generic : PerformanceEntryList +>performance.getEntriesByType("something-unknown") : PerformanceEntryList +>performance.getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>performance : Performance +>getEntriesByType : { (type: "event"): PerformanceEventTiming[]; (type: "largest-contentful-paint"): LargestContentfulPaint[]; (type: "mark"): PerformanceMark[]; (type: "measure"): PerformanceMeasure[]; (type: "navigation"): PerformanceNavigationTiming[]; (type: "paint"): PerformancePaintTiming[]; (type: "resource"): PerformanceResourceTiming[]; (type: string): PerformanceEntryList; } +>"something-unknown" : "something-unknown" + +generic[0].entryType; +>generic[0].entryType : string +>generic[0] : PerformanceEntry +>generic : PerformanceEntryList +>0 : 0 +>entryType : string + diff --git a/tsc/testdata/tests/cases/compiler/performanceGetEntriesByType.ts b/tsc/testdata/tests/cases/compiler/performanceGetEntriesByType.ts new file mode 100644 index 0000000000000..29d9b128cb362 --- /dev/null +++ b/tsc/testdata/tests/cases/compiler/performanceGetEntriesByType.ts @@ -0,0 +1,29 @@ +// @target: esnext +// @lib: dom,esnext + +function pageWasReloaded(): boolean { + return performance + .getEntriesByType("navigation") + .some(entry => entry.type === "reload"); +} + +const marks = performance.getEntriesByType("mark"); +marks[0].detail; + +const measures = performance.getEntriesByType("measure"); +measures[0].detail; + +const paints = performance.getEntriesByType("paint"); +paints[0].startTime; + +const resources = performance.getEntriesByType("resource"); +resources[0].initiatorType; + +const events = performance.getEntriesByType("event"); +events[0].processingStart; + +const lcp = performance.getEntriesByType("largest-contentful-paint"); +lcp[0].renderTime; + +const generic = performance.getEntriesByType("something-unknown"); +generic[0].entryType;