signal-desktop/ts/util/loadable.ts

18 lines
442 B
TypeScript
Raw Normal View History

2021-12-16 09:02:22 -06:00
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
export enum LoadingState {
Loading,
Loaded,
LoadFailed,
}
export type Loadable<ValueT, ErrorT = unknown> =
| {
loadingState: LoadingState.Loading;
2025-03-26 12:35:32 -07:00
value?: never;
error?: never;
2021-12-16 09:02:22 -06:00
}
2025-03-26 12:35:32 -07:00
| { loadingState: LoadingState.Loaded; value: ValueT; error?: never }
| { loadingState: LoadingState.LoadFailed; value?: never; error: ErrorT };