Appearance
Type Declarations ​
File Information ​
- Path:
app/types/api.d.ts,app/types/auth.d.ts - Purpose: TypeScript declaration files for global type augmentations
- Exported From: Not exported (internal declarations)
Overview ​
These declaration files extend TypeScript's global type system to add type definitions for global variables, Nuxt modules, and Vue component properties. They provide type safety for global APIs and module configurations.
Declaration Files ​
API Declarations (api.d.ts) ​
Global type declarations for API client.
typescript
declare global {
const $api: typeof $fetch
}Purpose:
- Declares global
$apivariable - Type is
typeof $fetch(Nuxt's fetch function) - Available globally without import
Usage:
typescript
// Can use $api directly (if available globally)
const response = await $api('/endpoint')Auth Declarations (auth.d.ts) ​
Type augmentations for Nuxt auth module and app instance.
typescript
import '@nuxt/schema'
declare module '@nuxt/schema' {
interface NuxtConfig {
auth?: import('@sidebase/nuxt-auth').ModuleOptions
}
interface NuxtOptions {
auth?: import('@sidebase/nuxt-auth').ModuleOptions
}
}
declare module '#app' {
interface NuxtApp {
$api: $Fetch
$cancelAllRequests: () => void
}
}
declare module 'vue' {
interface ComponentCustomProperties {
$api: $Fetch
$cancelAllRequests: () => void
}
}Purpose:
- Extends
NuxtConfigwith auth module options - Extends
NuxtAppwith$apiand$cancelAllRequests - Extends Vue
ComponentCustomPropertiesfor component access
Usage:
typescript
// In nuxt.config.ts
export default defineNuxtConfig({
auth: {
// Type-safe auth configuration
}
})
// In components/composables
const { $api, $cancelAllRequests } = useNuxtApp()
// $api and $cancelAllRequests are type-safe
// In Vue components
this.$api('/endpoint') // Type-safeModule Augmentations ​
Nuxt Schema Module ​
Extends Nuxt configuration types:
typescript
declare module '@nuxt/schema' {
interface NuxtConfig {
auth?: ModuleOptions
}
}Nuxt App Module ​
Extends Nuxt app instance types:
typescript
declare module '#app' {
interface NuxtApp {
$api: $Fetch
$cancelAllRequests: () => void
}
}Vue Component Properties ​
Extends Vue component custom properties:
typescript
declare module 'vue' {
interface ComponentCustomProperties {
$api: $Fetch
$cancelAllRequests: () => void
}
}Usage Examples ​
Using Global API ​
typescript
// Type-safe global API usage
const response = await $api('/api/endpoint', {
method: 'POST',
body: { data: 'value' }
})Using Nuxt App Instance ​
typescript
const { $api, $cancelAllRequests } = useNuxtApp()
// Type-safe API calls
const data = await $api('/api/data')
// Type-safe cancellation
$cancelAllRequests()Using in Vue Components ​
typescript
// Options API
export default {
methods: {
async fetchData() {
// Type-safe
const data = await this.$api('/api/data')
}
}
}
// Composition API
const { $api } = useNuxtApp()
const data = await $api('/api/data')Nuxt Config ​
typescript
// nuxt.config.ts
export default defineNuxtConfig({
auth: {
// Type-safe auth configuration
// Options from @sidebase/nuxt-auth
}
})Notes ​
- Declaration files use
.d.tsextension - Not exported from
index.ts(internal declarations) - Extend global TypeScript types
- Provide type safety for global variables
- Module augmentations for Nuxt and Vue
- No runtime code, only type definitions
Related Documentation ​
- API Client Plugin - API client implementation
- TypeScript Documentation - TypeScript declaration files