diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index 7af797fc5..eae89089d 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -2908,6 +2908,9 @@ interface Attr extends Node { readonly specified: boolean; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/value) */ value: string; + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */ + get textContent(): string; + set textContent(value: string | null); } declare var Attr: { @@ -6213,6 +6216,9 @@ interface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode { replaceData(offset: number, count: number, data: string): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/substringData) */ substringData(offset: number, count: number): string; + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */ + get textContent(): string; + set textContent(value: string | null); } declare var CharacterData: { @@ -8608,6 +8614,9 @@ interface Element extends Node, ARIAMixin, Animatable, ChildNode, NonDocumentTyp * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/matches) */ webkitMatchesSelector(selectors: string): boolean; + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */ + get textContent(): string; + set textContent(value: string | null); addEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; diff --git a/baselines/ts5.5/dom.generated.d.ts b/baselines/ts5.5/dom.generated.d.ts index 8b5a00724..16efb25fe 100644 --- a/baselines/ts5.5/dom.generated.d.ts +++ b/baselines/ts5.5/dom.generated.d.ts @@ -2908,6 +2908,9 @@ interface Attr extends Node { readonly specified: boolean; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/value) */ value: string; + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */ + get textContent(): string; + set textContent(value: string | null); } declare var Attr: { @@ -6206,6 +6209,9 @@ interface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode { replaceData(offset: number, count: number, data: string): void; /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/substringData) */ substringData(offset: number, count: number): string; + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */ + get textContent(): string; + set textContent(value: string | null); } declare var CharacterData: { @@ -8599,6 +8605,9 @@ interface Element extends Node, ARIAMixin, Animatable, ChildNode, NonDocumentTyp * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/matches) */ webkitMatchesSelector(selectors: string): boolean; + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */ + get textContent(): string; + set textContent(value: string | null); addEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; diff --git a/inputfiles/addedTypes.jsonc b/inputfiles/addedTypes.jsonc index 18f695f4f..01fbedeb2 100644 --- a/inputfiles/addedTypes.jsonc +++ b/inputfiles/addedTypes.jsonc @@ -11,6 +11,19 @@ ] } }, + "Comment": { + "methods": { + "method": { + "textContent": { + "mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent", + "overrideSignatures": [ + "get textContent(): string", + "set textContent(value: string | null)" + ] + } + } + } + }, "DocumentAndElementEventHandlers": { "events": { "event": [ @@ -786,6 +799,13 @@ ] } } + }, + "textContent": { + "mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent", + "overrideSignatures": [ + "get textContent(): string", + "set textContent(value: string | null)" + ] } } }, @@ -1200,6 +1220,17 @@ }, "Attr": { "name": "Attr", + "methods": { + "method": { + "textContent": { + "mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent", + "overrideSignatures": [ + "get textContent(): string", + "set textContent(value: string | null)" + ] + } + } + }, "properties": { "property": { "ownerDocument": { @@ -1212,6 +1243,17 @@ }, "CharacterData": { "name": "CharacterData", + "methods": { + "method": { + "textContent": { + "mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent", + "overrideSignatures": [ + "get textContent(): string", + "set textContent(value: string | null)" + ] + } + } + }, "properties": { "property": { "ownerDocument": { diff --git a/unittests/files/nodeValue.ts b/unittests/files/nodeValue.ts new file mode 100644 index 000000000..1cc664ce3 --- /dev/null +++ b/unittests/files/nodeValue.ts @@ -0,0 +1,26 @@ +declare const assertType: () => ( + _x: T1, +) => StrictEqual extends true + ? () => void + : T1 extends T + ? { error: "Left side is not assignable to right side" } + : { error: "Right side is not assignable to left side" }; + +type StrictEqual = + (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 + ? true + : false; + +const div = document.createElement("div"); +assertType()(div.textContent)(); +div.textContent = null; + +const text = document.createTextNode("hello"); +assertType()(text.textContent)(); + +assertType()(document.textContent)(); + +const type = document.doctype!; +assertType()(type.textContent)(); + +export {};