We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 07d99f8 commit df32047Copy full SHA for df32047
3 files changed
packages/react-docgen/src/Documentation.ts
@@ -10,11 +10,13 @@ export interface Documentation {
10
11
export interface MethodParameter {
12
name: string;
13
+ description?: string;
14
optional: boolean;
15
type?: TypeDescriptor<FunctionSignatureType> | null;
16
}
17
18
export interface MethodReturn {
19
20
type: TypeDescriptor<FunctionSignatureType> | undefined;
21
22
packages/react-docgen/src/handlers/__tests__/__snapshots__/componentMethodsJsDocHandler-test.ts.snap
@@ -16,12 +16,10 @@ exports[`componentMethodsJsDocHandler > adds descriptions 1`] = `
"description": "The test",
"name": "test",
"optional": false,
- "type": null,
},
],
"returns": {
23
"description": "The number",
24
25
26
27
]
@@ -39,7 +37,6 @@ exports[`componentMethodsJsDocHandler > adds js doc types when no flow types 1`]
39
37
"name": "foo",
40
38
"params": [
41
{
42
- "description": null,
43
44
45
"type": {
@@ -48,7 +45,6 @@ exports[`componentMethodsJsDocHandler > adds js doc types when no flow types 1`]
48
49
46
50
47
51
52
53
"name": "string",
54
@@ -69,7 +65,6 @@ exports[`componentMethodsJsDocHandler > keeps flow types over js doc types 1`] =
69
65
70
66
71
67
72
73
68
74
75
@@ -78,7 +73,6 @@ exports[`componentMethodsJsDocHandler > keeps flow types over js doc types 1`] =
78
79
80
81
82
76
83
77
"name": "number",
84
packages/react-docgen/src/handlers/componentMethodsJsDocHandler.ts
@@ -5,21 +5,25 @@ import type {
5
} from '../Documentation.js';
6
import type { Handler } from './index.js';
7
8
+function removeEmpty<T extends Record<string, unknown>>(obj: T): T {
9
+ return Object.fromEntries(
+ Object.entries(obj).filter(([, v]) => v != null),
+ ) as T;
+}
+
// Merges two objects ignoring null/undefined.
-function merge<T, U>(obj1: T, obj2: U): (T & U) | null {
+function merge<
+ T extends object | null | undefined,
+ U extends object | null | undefined,
+>(obj1: T, obj2: U): (T & U) | null {
if (obj1 == null && obj2 == null) {
return null;
- const merged: Record<string, unknown> = {
- ...(obj1 as Record<string, unknown>),
+ const merged = {
+ ...removeEmpty(obj1 ?? {}),
+ ...removeEmpty(obj2 ?? {}),
};
- for (const prop in obj2 as Record<string, unknown>) {
- if (obj2[prop] != null) {
- merged[prop] = obj2[prop];
- }
-
return merged as T & U;
28
29
/**
0 commit comments