diff --git a/types/react-cache/index.d.ts b/types/react-cache/index.d.ts new file mode 100644 index 0000000000..13adb3621b --- /dev/null +++ b/types/react-cache/index.d.ts @@ -0,0 +1,14 @@ +// Type definitions for react-cache 2.0 +// Project: https://github.com/facebook/react/tree/master/packages/react-cache +// Definitions by: Spencer Miskoviak +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +export interface Resource { + read(key: Input): Value; + preload(key: Input): void; +} + +export function unstable_createResource( + fetch: (input: Input) => PromiseLike, + maybeHashInput?: (input: Input) => string | number +): Resource; diff --git a/types/react-cache/react-cache-tests.ts b/types/react-cache/react-cache-tests.ts new file mode 100644 index 0000000000..2131cadadb --- /dev/null +++ b/types/react-cache/react-cache-tests.ts @@ -0,0 +1,25 @@ +import { unstable_createResource } from "react-cache"; + +const fetchName = (name: string) => + new Promise((resolve, reject) => { + if (name === "Bob") { + resolve(name); + } else { + reject(`Invalid name: ${name}`); + } + }); + +const nameResource = unstable_createResource(fetchName); +nameResource.read("Bob"); + +const fetchUser = ({ name }: { name: string }) => + new Promise((resolve, reject) => { + if (name === "Jill") { + resolve(name); + } else { + reject(`Invalid name: ${name}`); + } + }); + +const userResource = unstable_createResource(fetchUser, ({ name }) => name); +userResource.read({ name: "Jill" }); diff --git a/types/react-cache/tsconfig.json b/types/react-cache/tsconfig.json new file mode 100644 index 0000000000..e61cdc7e5e --- /dev/null +++ b/types/react-cache/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "react-cache-tests.ts" + ] +} diff --git a/types/react-cache/tslint.json b/types/react-cache/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/react-cache/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }