Skip to content

Type Alias: PostDeferredCallbackArgs<TUrl, TData, RPA>

PostDeferredCallbackArgs<TUrl, TData, RPA> = [TUrl, TData] extends [RPA[0], undefined] ? [PostArgs[1], PostArgs[2]] : [TUrl, TData] extends [undefined, RPA[1]] ? [PostArgs[0], PostArgs[2]] : [TUrl, TData] extends [RPA[0], RPA[1]] ? [PostArgs[2]] : PostArgs

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

Type Parameters

TUrl

TUrl = undefined

TData

TData = undefined

RPA

RPA extends unknown[] = Required<PostArgs>

Example

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

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

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

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

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