diff options
author | dan <dan.abramov@gmail.com> | 2023-11-21 22:42:30 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-21 22:42:30 +0000 |
commit | 4c4ba553bdc4029e78eaf2ccf0f9df12e41a1b01 (patch) | |
tree | e97890d72da1fd0a2c10cc501f530a04dae3157a /src/state/cache/types.ts | |
parent | f18b9b32b0d296c8d19dc06956699f95c0af9be2 (diff) | |
download | voidsky-4c4ba553bdc4029e78eaf2ccf0f9df12e41a1b01.tar.zst |
Shadow refactoring and improvements (#1959)
* Make shadow a type-only concept * Prevent unnecessary init state recalc * Use derived state instead of effects * Batch emitter updates * Use object first seen time instead of dataUpdatedAt * Stop threading dataUpdatedAt through * Use same value consistently
Diffstat (limited to 'src/state/cache/types.ts')
-rw-r--r-- | src/state/cache/types.ts | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/state/cache/types.ts b/src/state/cache/types.ts index 8bfcc867c..055f4167e 100644 --- a/src/state/cache/types.ts +++ b/src/state/cache/types.ts @@ -1 +1,7 @@ -export type Shadow<T> = T & {isShadowed: true} +// This isn't a real property, but it prevents T being compatible with Shadow<T>. +declare const shadowTag: unique symbol +export type Shadow<T> = T & {[shadowTag]: true} + +export function castAsShadow<T>(value: T): Shadow<T> { + return value as any as Shadow<T> +} |