فهرست منبع

fix: Revert "fix(types/ref): allow getter and setter types to be unrelated (#11442)"

This reverts commit e0b2975ef65ae6a0be0aa0a0df43fb887c665251.

This change requires TypeScript 5.1 so it is moved to a minor release.
Evan You 1 سال پیش
والد
کامیت
b1abac06cd
4فایلهای تغییر یافته به همراه4 افزوده شده و 23 حذف شده
  1. 0 10
      packages/dts-test/ref.test-d.ts
  2. 0 8
      packages/dts-test/watch.test-d.ts
  3. 3 4
      packages/reactivity/src/ref.ts
  4. 1 1
      packages/runtime-core/src/apiWatch.ts

+ 0 - 10
packages/dts-test/ref.test-d.ts

@@ -172,16 +172,6 @@ describe('ref with generic', <T extends { name: string }>() => {
   expectType<string>(ss.value.name)
 })
 
-describe('allow getter and setter types to be unrelated', <T>() => {
-  const a = { b: ref(0) }
-  const c = ref(a)
-  c.value = a
-
-  const d = {} as T
-  const e = ref(d)
-  e.value = d
-})
-
 // shallowRef
 type Status = 'initial' | 'ready' | 'invalidating'
 const shallowStatus = shallowRef<Status>('initial')

+ 0 - 8
packages/dts-test/watch.test-d.ts

@@ -1,6 +1,5 @@
 import {
   type ComputedRef,
-  type MaybeRef,
   type Ref,
   computed,
   defineComponent,
@@ -204,10 +203,3 @@ defineComponent({
     expectType<{ foo: string }>(value)
   })
 }
-
-{
-  const css: MaybeRef<string> = ''
-  watch(ref(css), value => {
-    expectType<string>(value)
-  })
-}

+ 3 - 4
packages/reactivity/src/ref.ts

@@ -30,9 +30,8 @@ import { warn } from './warning'
 declare const RefSymbol: unique symbol
 export declare const RawSymbol: unique symbol
 
-export interface Ref<T = any, S = T> {
-  get value(): T
-  set value(_: S)
+export interface Ref<T = any> {
+  value: T
   /**
    * Type differentiator only.
    * We need this to be in public d.ts but don't want it to show up in IDE
@@ -109,7 +108,7 @@ export function isRef(r: any): r is Ref {
  * @param value - The object to wrap in the ref.
  * @see {@link https://vuejs.org/api/reactivity-core.html#ref}
  */
-export function ref<T>(value: T): Ref<UnwrapRef<T>, UnwrapRef<T> | T>
+export function ref<T>(value: T): Ref<UnwrapRef<T>>
 export function ref<T = any>(): Ref<T | undefined>
 export function ref(value?: unknown) {
   return createRef(value, false)

+ 1 - 1
packages/runtime-core/src/apiWatch.ts

@@ -46,7 +46,7 @@ import { useSSRContext } from './helpers/useSsrContext'
 
 export type WatchEffect = (onCleanup: OnCleanup) => void
 
-export type WatchSource<T = any> = Ref<T, any> | ComputedRef<T> | (() => T)
+export type WatchSource<T = any> = Ref<T> | ComputedRef<T> | (() => T)
 
 export type WatchCallback<V = any, OV = any> = (
   value: V,