Skip to content

Commit 23040ac

Browse files
committed
add Maybe type (WIP)
1 parent 2a0606c commit 23040ac

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

packages/shadow-objects/src/types.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,26 +98,30 @@ export interface ProvideContextOptions<T> {
9898
clearOnDestroy?: boolean;
9999
}
100100

101+
export type Maybe<T = unknown> = NonNullable<T> | undefined;
102+
101103
export interface ShadowObjectCreationAPI {
102104
entity: EntityApi;
103105

104106
provideContext<T = unknown>(
105107
name: string | symbol,
106108
sourceOrInitialValue?: T | SignalReader<T>,
107-
isEqual?: ProvideContextOptions<T> | CompareFunc<T>,
109+
options?: ProvideContextOptions<T> | CompareFunc<T>,
108110
): Signal<T>;
111+
109112
provideGlobalContext<T = unknown>(
110113
name: string | symbol,
111114
sourceOrInitialValue?: T | SignalReader<T>,
112-
isEqual?: ProvideContextOptions<T> | CompareFunc<T>,
115+
options?: ProvideContextOptions<T> | CompareFunc<T>,
113116
): Signal<T>;
114117

115-
useContext<T = any>(name: string | symbol, isEqual?: CompareFunc<T>): SignalReader<T>;
116-
useParentContext<T = any>(name: string | symbol, isEqual?: CompareFunc<T>): SignalReader<T>;
117-
useProperty<T = any>(name: string, isEqual?: CompareFunc<T>): SignalReader<T>;
118+
useContext<T = unknown>(name: string | symbol, isEqual?: CompareFunc<T>): SignalReader<Maybe<T>>;
119+
useParentContext<T = unknown>(name: string | symbol, isEqual?: CompareFunc<T>): SignalReader<Maybe<T>>;
120+
121+
useProperty<T = unknown>(name: string, isEqual?: CompareFunc<T>): SignalReader<Maybe<T>>;
118122
useProperties<K extends string>(props: Record<K, string>): Record<K, SignalReader<any>>;
119123

120-
createResource<T>(factory: () => T | undefined, cleanup?: (resource: T) => void): Signal<T | undefined>;
124+
createResource<T = unknown>(factory: () => Maybe<T>, cleanup?: (resource: NonNullable<T>) => any): Signal<Maybe<T>>;
121125

122126
createEffect(...args: Parameters<typeof createEffect>): ReturnType<typeof createEffect>;
123127
createSignal<T = unknown>(...args: Parameters<typeof createSignal<T>>): ReturnType<typeof createSignal<T>>;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import type {Maybe} from '../types.js';
2+
3+
export const toMaybe = <T = unknown>(value: T): Maybe<T> => value ?? undefined;

0 commit comments

Comments
 (0)