Skip to content

Commit 9e203a4

Browse files
Make most textContent not nullable (#1942)
Co-authored-by: saschanaz <saschanaz@users.noreply.github.com>
1 parent 37cc627 commit 9e203a4

File tree

6 files changed

+148
-0
lines changed

6 files changed

+148
-0
lines changed

baselines/dom.generated.d.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3211,6 +3211,9 @@ interface Attr extends Node {
32113211
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/value)
32123212
*/
32133213
value: string;
3214+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
3215+
get textContent(): string;
3216+
set textContent(value: string | null);
32143217
}
32153218

32163219
declare var Attr: {
@@ -7911,6 +7914,9 @@ interface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode {
79117914
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/substringData)
79127915
*/
79137916
substringData(offset: number, count: number): string;
7917+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
7918+
get textContent(): string;
7919+
set textContent(value: string | null);
79147920
}
79157921

79167922
declare var CharacterData: {
@@ -10365,6 +10371,8 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve
1036510371
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/writeln)
1036610372
*/
1036710373
writeln(...text: string[]): void;
10374+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
10375+
get textContent(): null;
1036810376
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1036910377
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1037010378
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
@@ -10390,6 +10398,9 @@ declare var Document: {
1039010398
interface DocumentFragment extends Node, NonElementParentNode, ParentNode {
1039110399
readonly ownerDocument: Document;
1039210400
getElementById(elementId: string): HTMLElement | null;
10401+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
10402+
get textContent(): string;
10403+
set textContent(value: string | null);
1039310404
}
1039410405

1039510406
declare var DocumentFragment: {
@@ -10466,6 +10477,8 @@ interface DocumentType extends Node, ChildNode {
1046610477
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/DocumentType/systemId)
1046710478
*/
1046810479
readonly systemId: string;
10480+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
10481+
get textContent(): null;
1046910482
}
1047010483

1047110484
declare var DocumentType: {
@@ -11067,6 +11080,9 @@ interface Element extends Node, ARIAMixin, Animatable, ChildNode, NonDocumentTyp
1106711080
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/matches)
1106811081
*/
1106911082
webkitMatchesSelector(selectors: string): boolean;
11083+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
11084+
get textContent(): string;
11085+
set textContent(value: string | null);
1107011086
addEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1107111087
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1107211088
removeEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3211,6 +3211,9 @@ interface Attr extends Node {
32113211
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/value)
32123212
*/
32133213
value: string;
3214+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
3215+
get textContent(): string;
3216+
set textContent(value: string | null);
32143217
}
32153218

32163219
declare var Attr: {
@@ -7904,6 +7907,9 @@ interface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode {
79047907
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/substringData)
79057908
*/
79067909
substringData(offset: number, count: number): string;
7910+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
7911+
get textContent(): string;
7912+
set textContent(value: string | null);
79077913
}
79087914

79097915
declare var CharacterData: {
@@ -10358,6 +10364,8 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve
1035810364
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/writeln)
1035910365
*/
1036010366
writeln(...text: string[]): void;
10367+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
10368+
get textContent(): null;
1036110369
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1036210370
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1036310371
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
@@ -10383,6 +10391,9 @@ declare var Document: {
1038310391
interface DocumentFragment extends Node, NonElementParentNode, ParentNode {
1038410392
readonly ownerDocument: Document;
1038510393
getElementById(elementId: string): HTMLElement | null;
10394+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
10395+
get textContent(): string;
10396+
set textContent(value: string | null);
1038610397
}
1038710398

1038810399
declare var DocumentFragment: {
@@ -10459,6 +10470,8 @@ interface DocumentType extends Node, ChildNode {
1045910470
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/DocumentType/systemId)
1046010471
*/
1046110472
readonly systemId: string;
10473+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
10474+
get textContent(): null;
1046210475
}
1046310476

1046410477
declare var DocumentType: {
@@ -11058,6 +11071,9 @@ interface Element extends Node, ARIAMixin, Animatable, ChildNode, NonDocumentTyp
1105811071
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/matches)
1105911072
*/
1106011073
webkitMatchesSelector(selectors: string): boolean;
11074+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
11075+
get textContent(): string;
11076+
set textContent(value: string | null);
1106111077
addEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1106211078
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1106311079
removeEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3211,6 +3211,9 @@ interface Attr extends Node {
32113211
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/value)
32123212
*/
32133213
value: string;
3214+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
3215+
get textContent(): string;
3216+
set textContent(value: string | null);
32143217
}
32153218

32163219
declare var Attr: {
@@ -7911,6 +7914,9 @@ interface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode {
79117914
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/substringData)
79127915
*/
79137916
substringData(offset: number, count: number): string;
7917+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
7918+
get textContent(): string;
7919+
set textContent(value: string | null);
79147920
}
79157921

79167922
declare var CharacterData: {
@@ -10365,6 +10371,8 @@ interface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEve
1036510371
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/writeln)
1036610372
*/
1036710373
writeln(...text: string[]): void;
10374+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
10375+
get textContent(): null;
1036810376
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1036910377
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1037010378
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
@@ -10390,6 +10398,9 @@ declare var Document: {
1039010398
interface DocumentFragment extends Node, NonElementParentNode, ParentNode {
1039110399
readonly ownerDocument: Document;
1039210400
getElementById(elementId: string): HTMLElement | null;
10401+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
10402+
get textContent(): string;
10403+
set textContent(value: string | null);
1039310404
}
1039410405

1039510406
declare var DocumentFragment: {
@@ -10466,6 +10477,8 @@ interface DocumentType extends Node, ChildNode {
1046610477
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/DocumentType/systemId)
1046710478
*/
1046810479
readonly systemId: string;
10480+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
10481+
get textContent(): null;
1046910482
}
1047010483

1047110484
declare var DocumentType: {
@@ -11067,6 +11080,9 @@ interface Element extends Node, ARIAMixin, Animatable, ChildNode, NonDocumentTyp
1106711080
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/matches)
1106811081
*/
1106911082
webkitMatchesSelector(selectors: string): boolean;
11083+
/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) */
11084+
get textContent(): string;
11085+
set textContent(value: string | null);
1107011086
addEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1107111087
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1107211088
removeEventListener<K extends keyof ElementEventMap>(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;

inputfiles/addedTypes.jsonc

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,13 @@
801801
]
802802
}
803803
}
804+
},
805+
"textContent": {
806+
"mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent",
807+
"overrideSignatures": [
808+
"get textContent(): string",
809+
"set textContent(value: string | null)"
810+
]
804811
}
805812
}
806813
},
@@ -1228,6 +1235,17 @@
12281235
},
12291236
"Attr": {
12301237
"name": "Attr",
1238+
"methods": {
1239+
"method": {
1240+
"textContent": {
1241+
"mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent",
1242+
"overrideSignatures": [
1243+
"get textContent(): string",
1244+
"set textContent(value: string | null)"
1245+
]
1246+
}
1247+
}
1248+
},
12311249
"properties": {
12321250
"property": {
12331251
"ownerDocument": {
@@ -1240,6 +1258,17 @@
12401258
},
12411259
"CharacterData": {
12421260
"name": "CharacterData",
1261+
"methods": {
1262+
"method": {
1263+
"textContent": {
1264+
"mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent",
1265+
"overrideSignatures": [
1266+
"get textContent(): string",
1267+
"set textContent(value: string | null)"
1268+
]
1269+
}
1270+
}
1271+
},
12431272
"properties": {
12441273
"property": {
12451274
"ownerDocument": {
@@ -1260,6 +1289,16 @@
12601289
"type": "Document"
12611290
}
12621291
}
1292+
},
1293+
"methods": {
1294+
"method": {
1295+
"textContent": {
1296+
"mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent",
1297+
"overrideSignatures": [
1298+
"get textContent(): null"
1299+
]
1300+
}
1301+
}
12631302
}
12641303
},
12651304
"ProcessingInstruction": {

inputfiles/overridingTypes.jsonc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -831,6 +831,12 @@
831831
"overrideType": "NodeListOf<HTMLElement>"
832832
}
833833
}
834+
},
835+
"textContent": {
836+
"mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent",
837+
"overrideSignatures": [
838+
"get textContent(): null"
839+
]
834840
}
835841
}
836842
},
@@ -897,6 +903,13 @@
897903
"overrideSignatures": [
898904
"getElementById(elementId: string): HTMLElement | null"
899905
]
906+
},
907+
"textContent": {
908+
"mdnUrl": "https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent",
909+
"overrideSignatures": [
910+
"get textContent(): string",
911+
"set textContent(value: string | null)"
912+
]
900913
}
901914
}
902915
},

unittests/files/textContent.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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+
// string:
15+
declare const element: Element;
16+
assertType<string>()(element.textContent)();
17+
element.textContent = null;
18+
19+
declare const characterData: CharacterData;
20+
assertType<string>()(characterData.textContent)();
21+
characterData.textContent = null;
22+
23+
declare const text: Text;
24+
assertType<string>()(text.textContent)();
25+
text.textContent = null;
26+
27+
declare const comment: Comment;
28+
assertType<string>()(comment.textContent)();
29+
comment.textContent = null;
30+
31+
declare const processingInstruction: ProcessingInstruction;
32+
assertType<string>()(processingInstruction.textContent)();
33+
processingInstruction.textContent = null;
34+
35+
declare const documentFragment: DocumentFragment;
36+
assertType<string>()(documentFragment.textContent)();
37+
38+
declare const attr: Attr;
39+
assertType<string>()(attr.textContent)();
40+
attr.textContent = null;
41+
42+
// null:
43+
assertType<null>()(document.textContent)();
44+
45+
declare const documentType: DocumentType;
46+
assertType<null>()(documentType.textContent)();
47+
48+
export {};

0 commit comments

Comments
 (0)