Browse Source

fix(types): fix shallowReadonly type

Evan You 4 năm trước cách đây
mục cha
commit
92f11d6740
2 tập tin đã thay đổi với 10 bổ sung3 xóa
  1. 1 3
      packages/reactivity/src/reactive.ts
  2. 9 0
      test-dts/reactivity.test-d.ts

+ 1 - 3
packages/reactivity/src/reactive.ts

@@ -166,9 +166,7 @@ export function readonly<T extends object>(
  * returned properties.
  * This is used for creating the props proxy object for stateful components.
  */
-export function shallowReadonly<T extends object>(
-  target: T
-): Readonly<{ [K in keyof T]: UnwrapNestedRefs<T[K]> }> {
+export function shallowReadonly<T extends object>(target: T): Readonly<T> {
   return createReactiveObject(
     target,
     true,

+ 9 - 0
test-dts/reactivity.test-d.ts

@@ -1,3 +1,4 @@
+import { shallowReadonly } from '@vue/reactivity'
 import { ref, readonly, describe, expectError, expectType, Ref } from './index'
 
 describe('should support DeepReadonly', () => {
@@ -13,3 +14,11 @@ describe('readonly ref', () => {
   const r = readonly(ref({ count: 1 }))
   expectType<Ref>(r)
 })
+
+describe('shallowReadonly ref unwrap', () => {
+  const r = shallowReadonly({ count: { n: ref(1) } })
+  // @ts-expect-error
+  r.count = 2
+  expectType<Ref>(r.count.n)
+  r.count.n.value = 123
+})