観察
as unknown as { ... } 型キャストが 8 箇所散在:
src/index.ts L130, L137, L149, L157, L174, L179 (OAuth wiring, ctx.props と env の型逃がし)
src/mcp.ts L719 (vector metadata)
src/rerank.ts L157 (reranker response)
OAuthProvider が import 時の型と実行時 ctx.props の型を一致させにくいため、呼び出し点ごとにキャストで吸収している。as unknown as は型システムの完全 escape hatch なので、コンパイラ保護が外れる。
提案
- OAuthProvider の Env / Props 型を 1 箇所で定義 (例:
src/oauth-types.ts)
- ctx.props の shape を専用型 (
McpProps, AuthorizedCtx 等) に集約
- キャストを境界 1 箇所のみに集約 (現在は呼び出し点ごとに散在)
- mcp.ts / rerank.ts のキャストは個別判断 (Vectorize / Workers AI の型定義不足が原因なので library 側の型定義 import or 専用型 alias で対応)
関連ファイル
src/index.ts (主な改修対象)
src/oauth.ts (型定義の置き場候補)
src/mcp.ts, src/rerank.ts (副次的な cast)
優先度
中 — 型安全性の向上、将来の OAuthProvider 仕様変更時の追従を容易にする。
観察
as unknown as { ... }型キャストが 8 箇所散在:src/index.tsL130, L137, L149, L157, L174, L179 (OAuth wiring, ctx.props と env の型逃がし)src/mcp.tsL719 (vector metadata)src/rerank.tsL157 (reranker response)OAuthProvider が import 時の型と実行時 ctx.props の型を一致させにくいため、呼び出し点ごとにキャストで吸収している。
as unknown asは型システムの完全 escape hatch なので、コンパイラ保護が外れる。提案
src/oauth-types.ts)McpProps,AuthorizedCtx等) に集約関連ファイル
src/index.ts(主な改修対象)src/oauth.ts(型定義の置き場候補)src/mcp.ts,src/rerank.ts(副次的な cast)優先度
中 — 型安全性の向上、将来の OAuthProvider 仕様変更時の追従を容易にする。