Просмотр исходного кода

test(types): add test for ref/shallowRef generic casting

Evan You 2 лет назад
Родитель
Сommit
d0b849ac39
1 измененных файлов с 16 добавлено и 0 удалено
  1. 16 0
      packages/dts-test/ref.test-d.ts

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

@@ -163,6 +163,17 @@ const state = reactive({
 
 expectType<string>(state.foo.label)
 
+describe('ref with generic', <T extends { name: string }>() => {
+  const r = {} as T
+  const s = ref(r)
+  expectType<string>(s.value.name)
+
+  const rr = {} as MaybeRef<T>
+  // should at least allow casting
+  const ss = ref(rr) as Ref<T>
+  expectType<string>(ss.value.name)
+})
+
 // shallowRef
 type Status = 'initial' | 'ready' | 'invalidating'
 const shallowStatus = shallowRef<Status>('initial')
@@ -206,6 +217,11 @@ describe('shallowRef with generic', <T extends { name: string }>() => {
   const s = shallowRef(r)
   expectType<string>(s.value.name)
   expectType<ShallowRef<T>>(shallowRef(r))
+
+  const rr = {} as MaybeRef<T>
+  // should at least allow casting
+  const ss = shallowRef(rr) as Ref<T> | ShallowRef<T>
+  expectType<string>(ss.value.name)
 })
 
 {