[Web API type definition issue] Mark navigator.serviceWorker as an optional property
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 38/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- À l'abandon
- Stack technique
- typescript
- Domaine
- frontend
Piste de recherche
Aucun fichier source ni aucun test n’est nommé dans l’issue. Commencez par examiner comment le générateur représente Navigator et ServiceWorker, puis lisez l’issue TypeScript liée ainsi que la discussion existante avant de modifier la déclaration. C’est terminé lorsque le type généré reflète le comportement optionnel signalé et que la validation pertinente réussit.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
navigator.serviceWorker may be undefined in some secure contexts, like IABs and Firefox Private Mode
Expected vs. Actual Behavior
navigator.serviceWorker.register()
Expected: throw a TypeScript error; serviceWorker may be undefined
Actual: no TypeScript error
Playground Link
No response
Browser Support
- This API is supported in at least two major browser engines (not two Chromium-based browsers).
Have Tried The Latest Releases
- This issue applies to the latest release of TypeScript.
- This issue applies to the latest release of
@types/web.
Additional Context
I am requesting a reconsideration of marking navigator.serviceWorker as optional.
The previous issue opened in 2023 on the TypeScript repository has been labeled as "Working as Intended" under the explanation by Ryan Cavanaugh: (https://github.com/microsoft/TypeScript/issues/52044#issuecomment-1372844081)
Quoting:
APIs like these are marked non-optional for convenience, since it's extremely plausible that your script runs only in secure contexts as an invariant.
Based on his comment, it appears to me that it had been misunderstood that serviceWorker is undefined in non-secure contexts, while the point is that it may be undefined even in secure contexts.
Examples include but are not limited to:
- Firefox's private mode
- Some in-app browsers, especially those on iOS.
In-app browser usage is not insignificant!
~62% of global web traffic comes from mobile devices, and, according to eMarketer, ~88% of the time people spend in their mobile devices is used on apps. Apps today incorporate IABs for the purposes of authentication, advertisement, and more. IAB usage is at its peak in social media and messaging apps.
Given the high usage of IABs. serviceWorker not being an optional property of navigator is anything but convenient.
- Langage dominant
- TypeScript
- Étoiles
- 740
- Forks
- 474
- Merge moyen
- 2 j 8 h
- PR mergées (30 j)
- 15
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de microsoft/TypeScript-DOM-lib-generator
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
microsoft/TypeScript-DOM-lib-generator#2554 · 6 commentaires ·
-
lib.d.ts bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
lib.d.ts bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 68/100
microsoft/TypeScript-DOM-lib-generator#2154 · 1 réaction ·
-
lib.d.ts bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
microsoft/TypeScript-DOM-lib-generator#2107 · 5 commentaires ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
microsoft/TypeScript-DOM-lib-generator#1675 · 2 commentaires · 1 réaction ·
Toutes les issues de microsoft/TypeScript-DOM-lib-generator
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
[Bug]: Matrix progress drafts fail with "Matrix runtime not initialized" during tool activity Ouvertebug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Client support matrix inclusion Ouverteenhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
calcite-components needs triage refactor
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Esri/calcite-design-system#15203 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
danielmiessler/LifeOS#2218 ·