[Web API type definition issue] incorrect type definition for `getElementById()`
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 45/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- typescript
- 领域
- tooling
调研方向
从 Document 和 DocumentFragment 的生成版 lib.dom 定义入手,追踪它们的 getElementById 签名是如何生成的。确认 issue 中所示的 Web API 行为,将两个返回类型都更新为 Element | null,并验证生成的定义或相关检查反映了修正后的签名。
由索引模型根据 Issue 内容生成。
描述
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;
}
- 主要语言
- TypeScript
- 星标
- 741
- 派生
- 475
- 平均合并
- 6 天 10 小时
- 30 天内合并 PR
- 6
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
microsoft/TypeScript-DOM-lib-generator 的其他 Issue
-
lib.d.ts bug
难度 2/5 1-3 小时 新手友好度 62/100
microsoft/TypeScript-DOM-lib-generator#2566 · 2 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
microsoft/TypeScript-DOM-lib-generator#2554 · 6 条评论 ·
维护者通常 1 天内回复
-
lib.d.ts bug
难度 2/5 1-3 小时 新手友好度 68/100
microsoft/TypeScript-DOM-lib-generator#2485 ·
维护者通常 1 天内回复
-
Incorrect MDN link for requestAnimationFrame in lib.dom.d.ts可能已有人在做 @Mohitlikestocode 于 255 天前认领。 未关闭lib.d.ts bug
难度 1/5 1 小时以内 新手友好度 68/100
microsoft/TypeScript-DOM-lib-generator#2154 · 1 个 reaction ·
维护者通常 1 天内回复
-
lib.d.ts bug
难度 2/5 1-3 小时 新手友好度 68/100
microsoft/TypeScript-DOM-lib-generator#2107 · 5 条评论 ·
维护者通常 1 天内回复
查看 microsoft/TypeScript-DOM-lib-generator 的全部 Issue
相似的 Issue
-
ble-needs-fable-review bug mobile priority:P2
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
ColeMurray/background-agents#2305 ·
维护者通常 1 天内回复
-
bug from-studio
难度 2/5 1-3 小时 新手友好度 63/100
esengine/DeepSeek-Reasonix#12355 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 78/100
oblien/openship#1086 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复