Skip to content

Type Alias: PostDeferredCbArgs<TUrl, TData, Options, CbArgsReq>

PostDeferredCbArgs<TUrl, TData, Options, CbArgsReq> = [TUrl, TData] extends [CbArgsReq[0], undefined] ? [PostArgs[1], PostArgs[2]] : [TUrl, TData] extends [undefined, CbArgsReq[1]] ? [PostArgs[0], PostArgs[2]] : [TUrl, TData] extends [CbArgsReq[0], CbArgsReq[1]] ? [PostArgs[2]] : [TUrl, TData, Options]

Defined in: packages/fetch/src/types.ts:424

Dynamic arguments for deferred post-like methods.

Type Parameters

TUrl

TUrl = undefined

TData

TData = undefined

Options

Options = undefined

CbArgsReq

CbArgsReq extends unknown[] = Required<PostArgs>

Example

typescript
import fetch, { type PostDeferredCbArgs } from '@superutils/fetch'

// test with types
type T1 = PostDeferredCbArgs<string | URL, undefined> // expected: [data, options]
type T2 = PostDeferredCbArgs<undefined, string> // expected: [url, options]
type T3 = PostDeferredCbArgs // expected: [url, data, options]
type T4 = PostDeferredCbArgs<string, string> // expected: [options]

const data = { name: 'test' }
const url = 'https://domain.com'
// test with fetch.post.deferred()
const f1 = fetch.post.deferred({}, 'https://domain.com')
// expected: [data, options]
f1({data: 1}).then(console.log, console.warn)

const f2 = fetch.post.deferred({}, undefined, 'dome data')
// expected: [url, options]
f2('https').then(console.log, console.warn)

const f3 = fetch.post.deferred({})
// expected: [url, data, options]
f3('https://domain.com').then(console.log, console.warn)

const f4 = fetch.post.deferred({}, 'url', 'data')
// expected: [options]
f4().then(console.log, console.warn)