mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-04-29 21:02:11 -05:00
Merge pull request #24137 from Microsoft/fix23977
Optimize intersections of unions of unit types
This commit is contained in:
27
tests/cases/compiler/intersectionsOfLargeUnions.ts
Normal file
27
tests/cases/compiler/intersectionsOfLargeUnions.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
// @strict: true
|
||||
|
||||
// Repro from #23977
|
||||
|
||||
export function assertIsElement(node: Node | null): node is Element {
|
||||
let nodeType = node === null ? null : node.nodeType;
|
||||
return nodeType === 1;
|
||||
}
|
||||
|
||||
export function assertNodeTagName<
|
||||
T extends keyof ElementTagNameMap,
|
||||
U extends ElementTagNameMap[T]>(node: Node | null, tagName: T): node is U {
|
||||
if (assertIsElement(node)) {
|
||||
const nodeTagName = node.tagName.toLowerCase();
|
||||
return nodeTagName === tagName;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
export function assertNodeProperty<
|
||||
T extends keyof ElementTagNameMap,
|
||||
P extends keyof ElementTagNameMap[T],
|
||||
V extends HTMLElementTagNameMap[T][P]>(node: Node | null, tagName: T, prop: P, value: V) {
|
||||
if (assertNodeTagName(node, tagName)) {
|
||||
node[prop];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user