UNPKG

3.19 kBTypeScriptView Raw
1import {
2 Ref,
3 UnwrapRef,
4 ComputedRef,
5 WritableComputedOptions,
6 DebuggerOptions,
7 WritableComputedRef,
8 CustomRefFactory
9} from '@vue/runtime-dom'
10
11export declare const RefType: unique symbol
12
13export declare const enum RefTypes {
14 Ref = 1,
15 ComputedRef = 2,
16 WritableComputedRef = 3
17}
18
19type RefValue<T> = T extends null | undefined ? T : ReactiveVariable<T>
20
21type ReactiveVariable<T> = T & { [RefType]?: RefTypes.Ref }
22
23type ComputedRefValue<T> = T extends null | undefined ? T : ComputedVariable<T>
24
25type ComputedVariable<T> = T & { [RefType]?: RefTypes.ComputedRef }
26
27type WritableComputedRefValue<T> = T extends null | undefined
28 ? T
29 : WritableComputedVariable<T>
30
31type WritableComputedVariable<T> = T & {
32 [RefType]?: RefTypes.WritableComputedRef
33}
34
35type NormalObject<T extends object> = T & { [RefType]?: never }
36
37/**
38 * Vue ref transform macro for binding refs as reactive variables.
39 */
40export declare function $<T>(arg: ComputedRef<T>): ComputedRefValue<T>
41export declare function $<T>(
42 arg: WritableComputedRef<T>
43): WritableComputedRefValue<T>
44export declare function $<T>(arg: Ref<T>): RefValue<T>
45export declare function $<T extends object>(arg?: T): DestructureRefs<T>
46
47type DestructureRefs<T extends object> = {
48 [K in keyof T]: T[K] extends ComputedRef<infer V>
49 ? ComputedRefValue<V>
50 : T[K] extends WritableComputedRef<infer V>
51 ? WritableComputedRefValue<V>
52 : T[K] extends Ref<infer V>
53 ? RefValue<V>
54 : T[K]
55}
56
57/**
58 * Vue ref transform macro for accessing underlying refs of reactive variables.
59 */
60export declare function $$<T extends object>(arg: NormalObject<T>): ToRawRefs<T>
61export declare function $$<T>(value: RefValue<T>): Ref<T>
62export declare function $$<T>(value: ComputedRefValue<T>): ComputedRef<T>
63export declare function $$<T>(
64 value: WritableComputedRefValue<T>
65): WritableComputedRef<T>
66
67type ToRawRefs<T extends object> = {
68 [K in keyof T]: T[K] extends RefValue<infer V>
69 ? Ref<V>
70 : T[K] extends ComputedRefValue<infer V>
71 ? ComputedRef<V>
72 : T[K] extends WritableComputedRefValue<infer V>
73 ? WritableComputedRef<V>
74 : T[K] extends object
75 ? T[K] extends
76 | Function
77 | Map<any, any>
78 | Set<any>
79 | WeakMap<any, any>
80 | WeakSet<any>
81 ? T[K]
82 : ToRawRefs<T[K]>
83 : T[K]
84}
85
86export declare function $ref<T>(): RefValue<T | undefined>
87export declare function $ref<T>(arg: T | Ref<T>): RefValue<UnwrapRef<T>>
88
89export declare function $shallowRef<T>(): RefValue<T | undefined>
90export declare function $shallowRef<T>(arg: T): RefValue<T>
91
92export declare function $toRef<T extends object, K extends keyof T>(
93 object: T,
94 key: K
95): RefValue<T[K]>
96
97export declare function $toRef<T extends object, K extends keyof T>(
98 object: T,
99 key: K,
100 defaultValue: T[K]
101): RefValue<Exclude<T[K], undefined>>
102
103export declare function $customRef<T>(factory: CustomRefFactory<T>): RefValue<T>
104
105export declare function $computed<T>(
106 getter: () => T,
107 debuggerOptions?: DebuggerOptions
108): ComputedRefValue<T>
109export declare function $computed<T>(
110 options: WritableComputedOptions<T>,
111 debuggerOptions?: DebuggerOptions
112): WritableComputedRefValue<T>
113
\No newline at end of file