diff --git a/packages/solid/src/reactive/signal.ts b/packages/solid/src/reactive/signal.ts index a7b4995ef..9bfc454ae 100644 --- a/packages/solid/src/reactive/signal.ts +++ b/packages/solid/src/reactive/signal.ts @@ -577,19 +577,19 @@ function isPromise(v: any): v is Promise { * * @description https://docs.solidjs.com/reference/basic-reactivity/create-resource */ -export function createResource( - fetcher: ResourceFetcher, - options: InitializedResourceOptions, true> -): InitializedResourceReturn; +export function createResource( + fetcher: (k: true, info: ResourceFetcherInfo) => T | Promise, + options: ResourceOptions & { initialValue: I } +): InitializedResourceReturn; export function createResource( fetcher: ResourceFetcher, options?: ResourceOptions, true> ): ResourceReturn; -export function createResource( +export function createResource( source: ResourceSource, - fetcher: ResourceFetcher, - options: InitializedResourceOptions, S> -): InitializedResourceReturn; + fetcher: (k: S, info: ResourceFetcherInfo) => T | Promise, + options: ResourceOptions & { initialValue: I } +): InitializedResourceReturn; export function createResource( source: ResourceSource, fetcher: ResourceFetcher, diff --git a/packages/solid/test/resource.type-tests.ts b/packages/solid/test/resource.type-tests.ts index 0df3a8e6b..05f9d6389 100644 --- a/packages/solid/test/resource.type-tests.ts +++ b/packages/solid/test/resource.type-tests.ts @@ -56,6 +56,21 @@ type Equals = type Tests = Assert>>; } +// without source +// with fetcher, nullable initialValue +{ + const resourceReturn = createResource( + () => { + return Promise.resolve(1); + }, + { + initialValue: null + } + ); + + type Tests = Assert>>; +} + // without initialValue // with source, fetcher { @@ -105,6 +120,21 @@ type Equals = ); } +// with source, fetcher, nullable initialValue +{ + const resourceReturn = createResource( + () => 1, + () => { + return Promise.resolve(1); + }, + { + initialValue: null + } + ); + + type Tests = Assert>>; +} + /* Resource type tests */ { let resource!: Resource;