deno.land / x / solid_signals@solid-signals@1.3.7 / src / utils / signalArray.ts

signalArray.ts
نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { Signal } from "solid-js";
// Truely recursive type will cause the following error in SignalFromArray// "Type instantiation is excessively deep and possibly infinite. ts(2589)"// type RecursiveArray<T> = (T | RecursiveArray<T>)[];type RecursiveArray<T> = T[] | T[][] | T[][][] | T[][][][];
type ReplaceSignal<Array, Value> = Array extends Signal<{}> ? Value : Array extends any[] ? ReplaceSignal<Array[number], Value>[] : never;
type SignalFromArray<T extends RecursiveArray<Signal<{}>>> = T extends Signal<{}> ? T : T extends any[] ? SignalFromArray<T[number]> : never;
export function signalArray<Array extends RecursiveArray<Signal<{}>>>( array: Array): [ ReplaceSignal<Array, SignalFromArray<Array>[0]>, ReplaceSignal<Array, SignalFromArray<Array>[1]>] { const state: any = []; const setState: any = [];
for (let i = 0; i < array.length; i++) { const item = array[i]; [state[i], setState[i]] = item[0] instanceof Array ? signalArray(item as Array) : item; }
return [state, setState];}
solid_signals

Version Info

Tagged at
a year ago