diff --git a/types/react-relay/index.d.ts b/types/react-relay/index.d.ts index 91a1bbbe1d..259896846f 100644 --- a/types/react-relay/index.d.ts +++ b/types/react-relay/index.d.ts @@ -18,6 +18,14 @@ export { import * as React from "react"; import * as RelayRuntimeTypes from "relay-runtime"; +// ~~~~~~~~~~~~~~~~~~~~~ +// Utility types +// ~~~~~~~~~~~~~~~~~~~~~ +type Diff = ({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T]; +type Omit = { [P in Diff]: T[P] }; + +type RemoveRelayProp

= Omit

; + // ~~~~~~~~~~~~~~~~~~~~~ // Maybe Fix // ~~~~~~~~~~~~~~~~~~~~~ @@ -82,7 +90,7 @@ export class QueryRenderer extends ReactRelayQueryRenderer {} export function createFragmentContainer( Component: React.ComponentType, fragmentSpec: RelayRuntimeTypes.GraphQLTaggedNode | GeneratedNodeMap -): React.ComponentType; +): React.ComponentType>; // ~~~~~~~~~~~~~~~~~~~~~ // createPaginationContainer @@ -130,7 +138,7 @@ export function createPaginationContainer( Component: React.ComponentType, fragmentSpec: RelayRuntimeTypes.GraphQLTaggedNode | GeneratedNodeMap, connectionConfig: ConnectionConfig -): React.ComponentType; +): React.ComponentType>; // ~~~~~~~~~~~~~~~~~~~~~ // createRefetchContainer @@ -153,4 +161,4 @@ export function createRefetchContainer( Component: React.ComponentType, fragmentSpec: RelayRuntimeTypes.GraphQLTaggedNode | GeneratedNodeMap, taggedNode: RelayRuntimeTypes.GraphQLTaggedNode -): React.ComponentType; +): React.ComponentType>; diff --git a/types/react-relay/test/react-relay-tests.tsx b/types/react-relay/test/react-relay-tests.tsx index 9385922dcf..6e4aaf3c8e 100644 --- a/types/react-relay/test/react-relay-tests.tsx +++ b/types/react-relay/test/react-relay-tests.tsx @@ -80,6 +80,10 @@ const MyQueryRenderer = (props: { name: string }) => ( `, } ); + + function doesNotRequireRelayPropToBeProvided() { + ; + } }; // ~~~~~~~~~~~~~~~~~~~~~ @@ -141,6 +145,11 @@ const MyQueryRenderer = (props: { name: string }) => ( } ` ); + + function doesNotRequireRelayPropToBeProvided() { + const feed = { stories: { edges: [] }}; // TODO + ; + } }; // ~~~~~~~~~~~~~~~~~~~~~ @@ -232,6 +241,10 @@ const MyQueryRenderer = (props: { name: string }) => ( `, } ); + + function doesNotRequireRelayPropToBeProvided() { + const user = { feed: { edges: [] }}; // TODO + ; } };