UNPKG

3.06 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>(arg?: T | Ref<T>): RefValue<UnwrapRef<T>>
87
88export declare function $shallowRef<T>(arg?: T): RefValue<T>
89
90export declare function $toRef<T extends object, K extends keyof T>(
91 object: T,
92 key: K
93): RefValue<T[K]>
94
95export declare function $toRef<T extends object, K extends keyof T>(
96 object: T,
97 key: K,
98 defaultValue: T[K]
99): RefValue<Exclude<T[K], undefined>>
100
101export declare function $customRef<T>(factory: CustomRefFactory<T>): RefValue<T>
102
103export declare function $computed<T>(
104 getter: () => T,
105 debuggerOptions?: DebuggerOptions
106): ComputedRefValue<T>
107export declare function $computed<T>(
108 options: WritableComputedOptions<T>,
109 debuggerOptions?: DebuggerOptions
110): WritableComputedRefValue<T>
111
\No newline at end of file