inject.test-d.ts 711 B

1234567891011121314151617181920212223242526272829
  1. import { provide, inject, ref, Ref, InjectionKey } from 'vue'
  2. import { expectType } from './utils'
  3. provide('foo', 123)
  4. provide(123, 123)
  5. const key: InjectionKey<number> = Symbol()
  6. provide(key, 1)
  7. // @ts-expect-error
  8. provide(key, 'foo')
  9. expectType<number | undefined>(inject(key))
  10. expectType<number>(inject(key, 1))
  11. expectType<number>(inject(key, () => 1, true /* treatDefaultAsFactory */))
  12. expectType<() => number>(inject('foo', () => 1))
  13. expectType<() => number>(inject('foo', () => 1, false))
  14. expectType<number>(inject('foo', () => 1, true))
  15. // #8201
  16. type Cube = {
  17. size: number
  18. }
  19. const injectionKeyRef = Symbol('key') as InjectionKey<Ref<Cube>>
  20. // @ts-expect-error
  21. provide(injectionKeyRef, ref({}))