mirror of https://github.com/vuejs/core.git
fix(types): fix `shallowRef` type error (#9839)
This commit is contained in:
parent
e70f4c47c5
commit
9a571582b5
|
@ -201,11 +201,23 @@ if (refStatus.value === 'initial') {
|
|||
expectType<IsAny<typeof a>>(false)
|
||||
}
|
||||
|
||||
describe('shallowRef with generic', <T>() => {
|
||||
const r = ref({}) as MaybeRef<T>
|
||||
expectType<ShallowRef<T> | Ref<T>>(shallowRef(r))
|
||||
describe('shallowRef with generic', <T extends { name: string }>() => {
|
||||
const r = {} as T
|
||||
const s = shallowRef(r)
|
||||
expectType<string>(s.value.name)
|
||||
expectType<ShallowRef<T>>(shallowRef(r))
|
||||
})
|
||||
|
||||
{
|
||||
// should return ShallowRef<T> | Ref<T>, not ShallowRef<T | Ref<T>>
|
||||
expectType<ShallowRef<{ name: string }> | Ref<{ name: string }>>(
|
||||
shallowRef({} as MaybeRef<{ name: string }>)
|
||||
)
|
||||
expectType<ShallowRef<number> | Ref<string[]> | ShallowRef<string>>(
|
||||
shallowRef('' as Ref<string[]> | string | number)
|
||||
)
|
||||
}
|
||||
|
||||
// proxyRefs: should return `reactive` directly
|
||||
const r1 = reactive({
|
||||
k: 'v'
|
||||
|
|
|
@ -114,9 +114,13 @@ export type ShallowRef<T = any> = Ref<T> & { [ShallowRefMarker]?: true }
|
|||
* @param value - The "inner value" for the shallow ref.
|
||||
* @see {@link https://vuejs.org/api/reactivity-advanced.html#shallowref}
|
||||
*/
|
||||
export function shallowRef<T>(value: MaybeRef<T>): Ref<T> | ShallowRef<T>
|
||||
export function shallowRef<T extends Ref>(value: T): T
|
||||
export function shallowRef<T>(value: T): ShallowRef<T>
|
||||
export function shallowRef<T>(
|
||||
value: T
|
||||
): Ref extends T
|
||||
? T extends Ref
|
||||
? IfAny<T, ShallowRef<T>, T>
|
||||
: ShallowRef<T>
|
||||
: ShallowRef<T>
|
||||
export function shallowRef<T = any>(): ShallowRef<T | undefined>
|
||||
export function shallowRef(value?: unknown) {
|
||||
return createRef(value, true)
|
||||
|
|
Loading…
Reference in New Issue