[Web API type definition issue] Mark navigator.serviceWorker as an optional property

Ouverte
#1,987 8 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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

lib.d.ts bug
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

  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.

Autres issues de microsoft/TypeScript-DOM-lib-generator

Toutes les issues de microsoft/TypeScript-DOM-lib-generator

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

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