diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index d3b64fd20..e3e2aa222 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -2990,6 +2990,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: { @@ -6531,6 +6534,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: { @@ -9035,6 +9041,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 31829ff26..752d805cb 100644 --- a/baselines/ts5.5/dom.generated.d.ts +++ b/baselines/ts5.5/dom.generated.d.ts @@ -2990,6 +2990,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: { @@ -6524,6 +6527,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: { @@ -9026,6 +9032,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.6/dom.generated.d.ts b/baselines/ts5.6/dom.generated.d.ts index 435ce4c60..0b4e51a03 100644 --- a/baselines/ts5.6/dom.generated.d.ts +++ b/baselines/ts5.6/dom.generated.d.ts @@ -2990,6 +2990,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: { @@ -6531,6 +6534,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: { @@ -9035,6 +9041,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 ff6e0bbe0..0a3718b0e 100644 --- a/inputfiles/addedTypes.jsonc +++ b/inputfiles/addedTypes.jsonc @@ -801,6 +801,13 @@ ] } } + }, + "textContent": { + "mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent", + "overrideSignatures": [ + "get textContent(): string", + "set textContent(value: string | null)" + ] } } }, @@ -1228,6 +1235,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": { @@ -1240,6 +1258,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 {};