fix(types): calling readonly() with ref() should return Readonly<Ref<T>> (#5212)
This commit is contained in:
parent
171f5e9c60
commit
c64907d261
@ -438,7 +438,8 @@ describe('reactivity/readonly', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
test('should make ref readonly', () => {
|
test('should make ref readonly', () => {
|
||||||
const n: any = readonly(ref(1))
|
const n = readonly(ref(1))
|
||||||
|
// @ts-expect-error
|
||||||
n.value = 2
|
n.value = 2
|
||||||
expect(n.value).toBe(1)
|
expect(n.value).toBe(1)
|
||||||
expect(
|
expect(
|
||||||
|
@ -141,7 +141,7 @@ export type DeepReadonly<T> = T extends Builtin
|
|||||||
: T extends Promise<infer U>
|
: T extends Promise<infer U>
|
||||||
? Promise<DeepReadonly<U>>
|
? Promise<DeepReadonly<U>>
|
||||||
: T extends Ref<infer U>
|
: T extends Ref<infer U>
|
||||||
? Ref<DeepReadonly<U>>
|
? Readonly<Ref<DeepReadonly<U>>>
|
||||||
: T extends {}
|
: T extends {}
|
||||||
? { readonly [K in keyof T]: DeepReadonly<T[K]> }
|
? { readonly [K in keyof T]: DeepReadonly<T[K]> }
|
||||||
: Readonly<T>
|
: Readonly<T>
|
||||||
|
@ -10,7 +10,8 @@ import {
|
|||||||
toRef,
|
toRef,
|
||||||
toRefs,
|
toRefs,
|
||||||
ToRefs,
|
ToRefs,
|
||||||
shallowReactive
|
shallowReactive,
|
||||||
|
readonly
|
||||||
} from './index'
|
} from './index'
|
||||||
|
|
||||||
function plainType(arg: number | Ref<number>) {
|
function plainType(arg: number | Ref<number>) {
|
||||||
@ -236,6 +237,9 @@ expectType<Ref<string>>(p2.obj.k)
|
|||||||
expectType<Ref<number>>(x)
|
expectType<Ref<number>>(x)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// readonly() + ref()
|
||||||
|
expectType<Readonly<Ref<number>>>(readonly(ref(1)))
|
||||||
|
|
||||||
// #2687
|
// #2687
|
||||||
interface AppData {
|
interface AppData {
|
||||||
state: 'state1' | 'state2' | 'state3'
|
state: 'state1' | 'state2' | 'state3'
|
||||||
|
Loading…
Reference in New Issue
Block a user