Skip to content

Commit eede954

Browse files
authored
Use React.ReactNode for React.PropTypes.node type (lyft#9)
* Update readme: dynamic state is not optional becasue react state is always optional * Use React.ReactNode
1 parent 08885f1 commit eede954

File tree

3 files changed

+4
-10
lines changed

3 files changed

+4
-10
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ type MyComponentProps = {
4444
type MyComponentState = {
4545
foo: number;
4646
bar: string;
47-
baz: number | undefined;
47+
baz: number;
4848
}
4949

5050
class MyComponent extends React.Component<MyComponentProps, MyComponentState> {

src/transforms/react-js-make-props-and-state-transform.ts

+1-7
Original file line numberDiff line numberDiff line change
@@ -271,13 +271,7 @@ export function reactJSMakePropsAndStateInterfaceTransformFactoryFactory(typeChe
271271
} else if (/object/.test(text)) {
272272
result = ts.createKeywordTypeNode(ts.SyntaxKind.ObjectKeyword);
273273
} else if (/node/.test(text)) {
274-
result = ts.createUnionOrIntersectionTypeNode(
275-
ts.SyntaxKind.UnionType, [
276-
ts.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),
277-
ts.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),
278-
ts.createTypeReferenceNode('JSX.Element', [])
279-
]
280-
)
274+
result = ts.createTypeReferenceNode('React.ReactNode', []);
281275
} else if (/element/.test(text)) {
282276
result = ts.createTypeReferenceNode('JSX.Element', []);
283277
} else if (/func/.test(text)) {

test/react-js-make-props-and-state-transform/static-proptypes-many-props/output.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default class MyComponent extends React.Component<{
88
number?: number;
99
object?: object;
1010
string?: string;
11-
node?: number | string | JSX.Element;
11+
node?: React.ReactNode;
1212
element?: JSX.Element;
1313
anyRequired: any;
1414
arrayRequired: any[];
@@ -17,7 +17,7 @@ export default class MyComponent extends React.Component<{
1717
numberRequired: number;
1818
objectRequired: object;
1919
stringRequired: string;
20-
nodeRequired: number | string | JSX.Element;
20+
nodeRequired: React.ReactNode;
2121
elementRequired: JSX.Element;
2222
}, {}> {
2323
static propTypes = {

0 commit comments

Comments
 (0)