From 9d62762e11dca9a569edd79896166bf9c3ec9239 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 6 Aug 2023 14:51:00 -0400 Subject: [PATCH] Better types with branding --- types/index.d.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/types/index.d.ts b/types/index.d.ts index df1a587..506a2b7 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,7 +1,17 @@ declare module '@nx-js/observer-util' { - function observable(obj?: Observable): Observable + class ObservableBrand { + protected __OBSERVABLE_NOMINAL_BRAND: never; + } + + type Observed = T & ObservableBrand; + + type MonoObserved = T extends Observed + ? MonoObserved + : T; + + function observable(obj?: Observable): Observed> function isObservable(obj: object): boolean - function raw(obj: Observable): Observable + function raw(obj: Observable): Observable extends Observed ? MonoObserved : Observable; interface Scheduler { add: Function