Skip to content

Conversation

@BlackPoretsky
Copy link

@BlackPoretsky BlackPoretsky commented Jan 18, 2025

Не всегда необходимо передавать информацию об ошибке в событие otherwise. Эти изменения не предотвращают передачу информации, но, по крайней мере, TypeScript перестанет выдавать ошибки. Экспорт FailInfo необходим, если нужно указать тип информации об ошибке в generic параметре у createEvent<FailInfo>. На данный момент приходится использовать следующий подход:

type RemoteOperation = Mutation<any, any, any> | Query<any, any, any, any>;
type RetryConfig<T extends RemoteOperation> = Parameters<typeof retry<T>>['1'];
type Otherwise<T extends RemoteOperation> = Exclude<RetryConfig<T>['otherwise'], undefined>;
type FailInfo<T extends RemoteOperation> = Exclude<Parameters<Otherwise<T>>['0'], undefined>;

export const sessionSignOut: EventCallable<FailInfo<typeof sessionRefreshMut>> =
  createEvent<FailInfo<typeof sessionRefreshMut>>();

Не всегда необходимо передавать информацию об ошибке в событие otherwise. Эти изменения не предотвращают передачу информации, но, по крайней мере, TypeScript перестанет выдавать ошибки. Экспорт FailInfo необходим, если нужно указать тип информации об ошибке в generic параметре у createEvent<FailInfo<T>>. На данный момент приходится использовать следующий подход:
```
type RetryConfig = Parameters<typeof retry<typeof sessionRefreshMut>>['1'];
type Otherwise = Exclude<RetryConfig['otherwise'], undefined>;
type FailInfo = Exclude<Parameters<Otherwise>['0'], undefined>;

export const sessionSignOut: EventCallable<FailInfo> = createEvent<FailInfo>();
```
@netlify
Copy link

netlify bot commented Jan 18, 2025

Deploy Preview for farfetched canceled.

Name Link
🔨 Latest commit b3ec67a
🔍 Latest deploy log https://app.netlify.com/sites/farfetched/deploys/678f6f43d8769e0008448768

@igorkamyshev
Copy link
Member

Логично! Спасибо 🙏

Докинешь еще ченджлог через pnpm changeset?

…for the otherwise field in the retry configuration object has been extended (enabling the use of an event of type EventCallable<void>).
@igorkamyshev
Copy link
Member

Спасибо! Все круто, есть одно мини-замечание.

Мне кажется, нужно дописать типо-тесты на оба кейса. Сейчас для меня не очевидно, должен ли быть Event<Fail | void> или Event<Fail> | Event<void>.

Допиши плиз типо тесты на оба кейса, чтобы мы точно знали, что предложенное изменение корректно.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants