From b69cd5df972b2f5b3664ff28e5ffce7a170afc65 Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Thu, 13 Jul 2017 13:55:52 -0700 Subject: [PATCH 1/2] - Made the TreeItem.children prop optional since the library allows this and prevents verboseness/unneeded empty arrays - Added 'dom' lib in tsconfig to fix dom errors from definition dependencies when running `tsc` --- types/react-sortable-tree/index.d.ts | 2 +- types/react-sortable-tree/react-sortable-tree-tests.tsx | 2 +- types/react-sortable-tree/tsconfig.json | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/types/react-sortable-tree/index.d.ts b/types/react-sortable-tree/index.d.ts index a7805cd90e..a6a04f4968 100644 --- a/types/react-sortable-tree/index.d.ts +++ b/types/react-sortable-tree/index.d.ts @@ -15,7 +15,7 @@ export interface TreeItem { title?: string; subtitle?: string; expanded?: boolean; - children: TreeItem[]; + children?: TreeItem[]; [x: string]: any; } diff --git a/types/react-sortable-tree/react-sortable-tree-tests.tsx b/types/react-sortable-tree/react-sortable-tree-tests.tsx index 8b89db5196..1a5e2dfcd0 100644 --- a/types/react-sortable-tree/react-sortable-tree-tests.tsx +++ b/types/react-sortable-tree/react-sortable-tree-tests.tsx @@ -21,7 +21,7 @@ class Test extends React.Component { { title: "Title", subtitle: "Subtitle", children: [ {title: "Child 1", subtitle: "Subtitle", children: []}, - {title: "Child 2", subtitle: "Subtitle", children: []} + {title: "Child 2", subtitle: "Subtitle"} ] } ]; diff --git a/types/react-sortable-tree/tsconfig.json b/types/react-sortable-tree/tsconfig.json index f82f976d38..df74da5295 100644 --- a/types/react-sortable-tree/tsconfig.json +++ b/types/react-sortable-tree/tsconfig.json @@ -2,7 +2,8 @@ "compilerOptions": { "module": "commonjs", "lib": [ - "es6" + "es6", + "dom" ], "noImplicitAny": true, "noImplicitThis": true, From cb8a120a17f6b7a1ee5d3552ac0babd11756b293 Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Fri, 14 Jul 2017 09:59:10 -0700 Subject: [PATCH 2/2] Adjusted MeasureChildren have more flexible typing - Added React.ReactNode as an accepted children type - Added higher order component test which was the problem case --- types/react-measure/index.d.ts | 7 +++---- types/react-measure/react-measure-tests.tsx | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/types/react-measure/index.d.ts b/types/react-measure/index.d.ts index cbbc928215..c487cd7264 100644 --- a/types/react-measure/index.d.ts +++ b/types/react-measure/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for react-measure 0.4.0 +// Type definitions for react-measure 0.4 // Project: https://github.com/souporserious/react-measure // Definitions by: Alexey Svetliakov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -19,7 +19,7 @@ declare module "react-measure" { left?: number; } - type MeasureChildren = React.ReactElement | { (dimension: Dimensions): React.ReactElement }; + type MeasureChildren = React.ReactNode | React.ReactElement | ((dimension: Dimensions) => React.ReactElement); interface MeasureProps { /** @@ -43,7 +43,7 @@ declare module "react-measure" { /** * Callback when the component has been mutated. Receives dimensions, mutations, and anything passed to shouldMeasure. */ - onMeasure?: (dimensions: Dimensions) => void; + onMeasure?(dimensions: Dimensions): void; /** * Children, ordinary JSX element or function. Leaving it for reference here */ @@ -51,5 +51,4 @@ declare module "react-measure" { } } export = Measure; - } diff --git a/types/react-measure/react-measure-tests.tsx b/types/react-measure/react-measure-tests.tsx index a12266339f..4c02ba8f07 100644 --- a/types/react-measure/react-measure-tests.tsx +++ b/types/react-measure/react-measure-tests.tsx @@ -34,3 +34,20 @@ class Test2 extends React.Component { ); } } + +function testHocComponent(Component: React.ComponentClass): React.ComponentClass { + return class extends React.Component { + render(): JSX.Element { + return ( + + ; + + ); + } + + private handleDimensionChange = (dimensions: Measure.Dimensions) => { + dimensions.width; + dimensions.height; + } + }; +}