Function inject()

Injects a value provided by an ancestor component
or the application (via app.provide()).

// without default value
function inject<T>(key: InjectionKey<T> | string): T | undefined

// with default value
function inject<T>(key: InjectionKey<T> | string, defaultValue: T): T

// with factory
function inject<T>(
  key: InjectionKey<T> | string,
  defaultValue: () => T,
  treatDefaultAsFactory: true
): T
<script setup>
import { inject } from 'vue'
import { fooSymbol } from './injectionSymbols'

// inject static value without default
const foo = inject('foo')

// inject reactive value
const count = inject('count')

// inject with Symbol keys
const foo2 = inject(fooSymbol)

// inject with default value
const bar = inject('foo', 'default value')

// inject with function default value
const fn = inject('function', () => {})

// inject with default value factory
const baz = inject('factory', () => new ExpensiveObject(), true)
</script>