G

Size: a a a
G

🚀🚀
function createEffectWithStatus(handler) {
let id = 0
const inner = createEffect(({params}) => handler(params))
const fx = attach({
effect: inner,
mapParams: params => ({params, id: ++id})
})
const requestDone = inner.done.map(({params: {params, id}, result}) => ({
params, result, id
}))
const requestFail = inner.fail.map(({params: {params, id}, error}) => ({
params, error, id
}))
return {fx, start: inner, done: requestDone, fail: requestFail}
}🚀🚀
G
function createEffectWithStatus(handler) {
let id = 0
const inner = createEffect(({params}) => handler(params))
const fx = attach({
effect: inner,
mapParams: params => ({params, id: ++id})
})
const requestDone = inner.done.map(({params: {params, id}, result}) => ({
params, result, id
}))
const requestFail = inner.fail.map(({params: {params, id}, error}) => ({
params, error, id
}))
return {fx, start: inner, done: requestDone, fail: requestFail}
}🚀🚀
G
G
🚀🚀
🚀🚀
🚀🚀
export function merge<T extends ReadonlyArray<Unit<any>>>(
events: T,
): T[number] extends Unit<infer R> ? Event<R> : never
G
🚀🚀
G
export function merge<T extends ReadonlyArray<Unit<any>>>(
events: T,
): T[number] extends Unit<infer R> ? Event<R> : never
🚀🚀
T[number] extendsэто устойчивый оборот в тайпскрипте чтобы смержить массив типов в один
G
G

DS

NS

NS
DS