Skip to content

Commit 8cd8507

Browse files
committed
Return cloneNode as the receiver type
1 parent 8273e37 commit 8cd8507

6 files changed

Lines changed: 41 additions & 4 deletions

File tree

baselines/dom.generated.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26421,7 +26421,7 @@ interface Node extends EventTarget {
2642126421
*
2642226422
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/cloneNode)
2642326423
*/
26424-
cloneNode(subtree?: boolean): Node;
26424+
cloneNode(subtree?: boolean): this;
2642526425
/**
2642626426
* The **`compareDocumentPosition()`** method of the Node interface reports the position of its argument node relative to the node on which it is called.
2642726427
*

baselines/ts5.5/dom.generated.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26397,7 +26397,7 @@ interface Node extends EventTarget {
2639726397
*
2639826398
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/cloneNode)
2639926399
*/
26400-
cloneNode(subtree?: boolean): Node;
26400+
cloneNode(subtree?: boolean): this;
2640126401
/**
2640226402
* The **`compareDocumentPosition()`** method of the Node interface reports the position of its argument node relative to the node on which it is called.
2640326403
*

baselines/ts5.6/dom.generated.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26418,7 +26418,7 @@ interface Node extends EventTarget {
2641826418
*
2641926419
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/cloneNode)
2642026420
*/
26421-
cloneNode(subtree?: boolean): Node;
26421+
cloneNode(subtree?: boolean): this;
2642226422
/**
2642326423
* The **`compareDocumentPosition()`** method of the Node interface reports the position of its argument node relative to the node on which it is called.
2642426424
*

baselines/ts5.9/dom.generated.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26418,7 +26418,7 @@ interface Node extends EventTarget {
2641826418
*
2641926419
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/cloneNode)
2642026420
*/
26421-
cloneNode(subtree?: boolean): Node;
26421+
cloneNode(subtree?: boolean): this;
2642226422
/**
2642326423
* The **`compareDocumentPosition()`** method of the Node interface reports the position of its argument node relative to the node on which it is called.
2642426424
*

inputfiles/overridingTypes.jsonc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,13 @@
559559
"Node": {
560560
"methods": {
561561
"method": {
562+
"cloneNode": {
563+
"signature": {
564+
"0": {
565+
"overrideType": "this"
566+
}
567+
}
568+
},
562569
"appendChild": {
563570
"signature": {
564571
"0": {

unittests/files/cloneNode.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
declare const assertType: <T>() => <T1>(
2+
_x: T1,
3+
) => StrictEqual<T, T1> extends true
4+
? () => void
5+
: T1 extends T
6+
? { error: "Left side is not assignable to right side" }
7+
: { error: "Right side is not assignable to left side" };
8+
9+
type StrictEqual<X, Y> =
10+
(<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2
11+
? true
12+
: false;
13+
14+
declare const node: Node;
15+
assertType<Node>()(node.cloneNode())();
16+
17+
const div = document.createElement("div");
18+
assertType<HTMLDivElement>()(div.cloneNode(true))();
19+
20+
declare const documentFragment: DocumentFragment;
21+
assertType<DocumentFragment>()(documentFragment.cloneNode())();
22+
23+
declare const elementOrFragment: Element | DocumentFragment;
24+
assertType<Element | DocumentFragment>()(elementOrFragment.cloneNode())();
25+
26+
class FancyButton extends HTMLButtonElement {}
27+
declare const fancyButton: FancyButton;
28+
assertType<FancyButton>()(fancyButton.cloneNode())();
29+
30+
export {};

0 commit comments

Comments
 (0)