-
Notifications
You must be signed in to change notification settings - Fork 30
Closed
Labels
documentationDocumentation needed or being createdDocumentation needed or being createddotcom-rendering
Milestone
Description
As raised by @bryophyta in #5849 (comment), there are several ways of checking whether an method exists as a member of an object. We also have an auto-fixing ESLint rule that prevents us from using optional chaining on non-nullish values.
For example, the window.performance.getEntriesByType method is defined in lib.dom.d.ts, so we need to circumvent this rule to prevent errors in production.
Which options do people prefer?
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- not all browsers have this method
const option1 = window.performance.getEntriesByType?.('measure') ?? [];
const option2 = 'getEntriesByType' in window.performance ? window.performance.getEntriesByType('measure') : [];
const option3 = typeof window.performance.getEntriesByType === 'function' in ? window.performance.getEntriesByType('measure') : [];Metadata
Metadata
Assignees
Labels
documentationDocumentation needed or being createdDocumentation needed or being createddotcom-rendering