[Web API type definition issue] incorrect type definition for `getElementById()`
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 45/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- typescript
- Domaine
- tooling
Piste de recherche
Commencez par les définitions générées de lib.dom pour Document et DocumentFragment et retracez la manière dont leurs signatures de getElementById sont produites. Confirmez le comportement de la Web API montré dans l’issue, mettez à jour les deux types de retour en Element | null et vérifiez que les définitions générées ou les vérifications pertinentes reflètent les signatures corrigées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
incorrect type definition for document.getElementById() and shadowRoot.getElementById()
Expected vs. Actual Behavior
The type definition in lib.dom shows the signature as:
interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEventHandlers, NonElementParentNode, ParentNode, XPathEvaluatorBase {
// ... omitted ...
getElementById(elementId: string): HTMLElement | null;
// ... omitted ...
}
The signature should be
interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEventHandlers, NonElementParentNode, ParentNode, XPathEvaluatorBase {
// ... omitted ...
getElementById(elementId: string): Element | null;
// ... omitted ...
}
Playground Link
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
Proof:
// Run this in your console:
document.body.innerHTML = '<svg><g id="foo"></g></svg>'
const g = document.body!.firstElementChild!.firstElementChild
console.log(g instanceof SVGGElement) // true
const g2 = document.getElementById('foo')
console.log(g2 instanceof SVGGElement) // still true (getElementById did not return HTMLElement | null)
The type is also wrong for other types of documents:
interface DocumentFragment extends Node, NonElementParentNode, ParentNode {
readonly ownerDocument: Document;
getElementById(elementId: string): HTMLElement | null;
}
- 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
copse-dev/agent-pane#2953 ·
-
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 ·