
よっしー
こんにちは。よっしーです(^^)
今日は、SvelteKitのリファレンスについて解説しています。
背景
SvelteKitのリファレンスについて調査する機会がありましたので、その時の内容を備忘として記事に残しました。
@sveltejs/kit
NavigationTarget
NavigationTarget(特定のナビゲーションの対象に関する情報)
インターフェース定義:
interface NavigationTarget {…}
プロパティ:
params: Record<string, string> | null;
対象ページのパラメータ – 例えば/blog/[slug]
のようなルートに対して、{ slug: string }
オブジェクト。
対象がSvelteKitアプリの一部でない場合(ルートとして解決できない場合)はnull
。route: { id: string | null };
対象ルートに関する情報url: URL;
ナビゲーション先のURL
解説
NavigationTargetは、ナビゲーションの目的地に関する情報を提供するインターフェースです。
- パラメータ処理の特徴:
- 動的ルートパラメータのマッピング
- アプリ外部へのナビゲーション考慮(nullケース)
- 型安全な文字列マッピング
- 実用的なシナリオ:
// 内部ナビゲーションの例
{
params: { slug: 'post-1' },
route: { id: '/blog/[slug]' },
url: new URL('/blog/post-1', location.href)
}
// 外部ナビゲーションの例
{
params: null,
route: { id: null },
url: new URL('https://external-site.com')
}
- 主な用途:
- ナビゲーション先の事前検証
- ルーティングの制御
- 外部/内部リンクの区別
- URLパラメータの抽出
このインターフェースは、アプリケーション内のナビゲーション制御と情報アクセスを安全に行うための基盤を提供します。
NavigationType
NavigationType(ナビゲーションの種類)は以下の値を持つ:
enter
: アプリがハイドレーションされたform
: ユーザーがGETメソッドの<form>
を送信したleave
: ユーザーがタブを閉じるか、戻る/進むボタンで別のドキュメントに移動することでアプリを離れるlink
: リンクのクリックによってナビゲーションが開始されたgoto
:goto(...)
の呼び出しまたはリダイレクトによってナビゲーションが開始されたpopstate
: 戻る/進むナビゲーションによってナビゲーションが開始された
型定義:
type NavigationType =
| 'enter'
| 'form'
| 'leave'
| 'link'
| 'goto'
| 'popstate';
解説
NavigationTypeは、SvelteKitアプリケーションにおけるナビゲーションの発生要因を分類する列挙型です。
- アプリケーションのライフサイクル関連:
enter
: アプリの初期化完了時leave
: アプリケーションからの離脱時
- ユーザーアクション起因:
form
: フォーム送信による遷移link
: リンククリックによる遷移
- プログラム的な制御:
goto
: プログラムによる遷移- リダイレクトによる自動遷移
- ブラウザ履歴操作:
popstate
: 履歴操作による遷移
この型定義の主な用途:
- ナビゲーション種別に応じた適切な処理の実装
- アナリティクスやログ記録
- ユーザー体験の最適化
- 状態管理の制御
これらの分類により、アプリケーションは異なるナビゲーション状況に応じて適切な動作を実装できます。
NumericRange
NumericRange
は、数値の範囲を表現する型で:
TStart
: 開始数値(number型)TEnd
: 終了数値(number型)- 戻り値は
TEnd
とLessThan<TEnd>
の和集合からLessThan<TStart>
を除外した型
型定義:
type NumericRange
TStart extends number,
TEnd extends number
> = Exclude<TEnd | LessThan<TEnd>, LessThan<TStart>>;
解説
NumericRangeは、TypeScriptの型システムを使用して、コンパイル時に数値の範囲を表現するための型です。
- 動作の仕組み:
// 例:NumericRange<2, 4>の場合
// 1. LessThan<4> = 0 | 1 | 2 | 3
// 2. TEnd | LessThan<TEnd> = 4 | 0 | 1 | 2 | 3
// 3. LessThan<2> = 0 | 1
// 4. 最終結果 = 2 | 3 | 4
- 使用例:
type Example = NumericRange<2, 5>;
// 結果: 2 | 3 | 4 | 5
// 配列の長さ制限などに利用可能
type LimitedArray<T> = T[] & { length: NumericRange<1, 10> };
- 主な用途:
- 配列の長さ制限
- 数値パラメータの範囲制限
- 型レベルでの数値バリデーション
- コンパイル時の数値制約
この型定義は、型システムを使って数値の範囲を表現する高度なテクニックを示しています。
おわりに
今日は、 SvelteKitのリファレンスについて解説しました。

よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント