Skip to content

Commit

Permalink
fix(types): calling readonly() with ref() should return Readonly<Ref<…
Browse files Browse the repository at this point in the history
…T>> (#5212)
  • Loading branch information
HcySunYang authored Jan 21, 2022
1 parent 171f5e9 commit c64907d
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 3 deletions.
3 changes: 2 additions & 1 deletion packages/reactivity/__tests__/readonly.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,8 @@ describe('reactivity/readonly', () => {
})

test('should make ref readonly', () => {
const n: any = readonly(ref(1))
const n = readonly(ref(1))
// @ts-expect-error
n.value = 2
expect(n.value).toBe(1)
expect(
Expand Down
2 changes: 1 addition & 1 deletion packages/reactivity/src/reactive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ export type DeepReadonly<T> = T extends Builtin
: T extends Promise<infer U>
? Promise<DeepReadonly<U>>
: T extends Ref<infer U>
? Ref<DeepReadonly<U>>
? Readonly<Ref<DeepReadonly<U>>>
: T extends {}
? { readonly [K in keyof T]: DeepReadonly<T[K]> }
: Readonly<T>
Expand Down
6 changes: 5 additions & 1 deletion test-dts/ref.test-d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ import {
toRef,
toRefs,
ToRefs,
shallowReactive
shallowReactive,
readonly
} from './index'

function plainType(arg: number | Ref<number>) {
Expand Down Expand Up @@ -236,6 +237,9 @@ expectType<Ref<string>>(p2.obj.k)
expectType<Ref<number>>(x)
}

// readonly() + ref()
expectType<Readonly<Ref<number>>>(readonly(ref(1)))

// #2687
interface AppData {
state: 'state1' | 'state2' | 'state3'
Expand Down

0 comments on commit c64907d

Please sign in to comment.