sveltejs/kit

Add $routes type alias

已關閉

#13,517 建立於 2025年2月28日

 (2 則留言) (2 個反應) (0 位負責人)JavaScript (1,719 個分叉)batch import
feature / enhancementhelp wantedneeds-decision

倉庫指標

星標
 (17,446 顆星)
PR 合併指標
 (平均合併 17天 22小時) (30 天內合併 184 個 PR)

描述

Describe the problem

I'd love to use route data directly in $lib/components instead of passing props to reduce type boilerplate. This is possible with page.data from $app/state, but it lacks proper types, requiring manual type assertions:

import { page } from '$app/state';
import type { PageData } from "../../routes/listings/$types";

const { carsCount } = $derived(page.data as PageData)

The main challenge is importing the correct PageData type, especially in deeply nested components and routes - path can quickly become cumbersome.

Describe the proposed solution

I'd love to have $routes alias which points directly to generated route types so I can use it in any part of the app:

import { page } from '$app/state';
import type { PageData } from "$routes/listings/$types";

const { carsCount } = $derived(page.data as PageData)

It's already working by providing alias in svelte.config.js:

export default {
  kit: {
    alias: {
      $routes: '.svelte-kit/types/src/routes'
    }
  }
}

Would be nice to have it right of the box 🥳

Alternatives considered

Some generic with route path param would also be fine

Importance

would make my life easier

Additional Information

No response

貢獻者指南