migrate-to-shoehorn
テストファイル内の `as` 型アサーションを @total-typescript/shoehorn へ移行します。ユーザーがshoehornに言及した場合、テスト内の `as` を置き換えたい場合、または部分的なテストデータが必要な場合に使用します。
description の原文を見る
Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.
SKILL.md 本文
Shoehorn への移行
Shoehorn を使う理由
shoehorn を使うと、テストで部分的なデータを渡しつつ TypeScript を満たすことができます。as アサーションを型安全な代替案に置き換えます。
テストコードのみ使用可能。 本番コードで shoehorn を使用しないでください。
テストで as を使う際の問題点:
- 使わないよう指導されている
- 対象の型を手動で指定する必要がある
- 意図的に間違ったデータに対してダブルアサーション (
as unknown as Type) が必要
インストール
npm i @total-typescript/shoehorn
移行パターン
必要なプロパティが少ない大きなオブジェクト
Before:
type Request = {
body: { id: string };
headers: Record<string, string>;
cookies: Record<string, string>;
// ...20 個以上のプロパティ
};
it("gets user by id", () => {
// body.id だけが必要だが Request 全体をフェイクしなければならない
getUser({
body: { id: "123" },
headers: {},
cookies: {},
// ...20 個のプロパティをフェイク
});
});
After:
import { fromPartial } from "@total-typescript/shoehorn";
it("gets user by id", () => {
getUser(
fromPartial({
body: { id: "123" },
}),
);
});
as Type → fromPartial()
Before:
getUser({ body: { id: "123" } } as Request);
After:
import { fromPartial } from "@total-typescript/shoehorn";
getUser(fromPartial({ body: { id: "123" } }));
as unknown as Type → fromAny()
Before:
getUser({ body: { id: 123 } } as unknown as Request); // 意図的に間違った型
After:
import { fromAny } from "@total-typescript/shoehorn";
getUser(fromAny({ body: { id: 123 } }));
各関数の使い分け
| 関数 | 用途 |
|---|---|
fromPartial() | 型チェックを通す部分的なデータを渡す |
fromAny() | 意図的に間違ったデータを渡す (オートコンプリート継続) |
fromExact() | 完全なオブジェクトを強制 (後で fromPartial に置き換え可) |
ワークフロー
-
要件を確認 - ユーザーに質問:
- どのテストファイルに問題を起こしている
asアサーションがあるか? - 一部のプロパティだけが重要な大きなオブジェクトを扱っているか?
- エラーテストのために意図的に間違ったデータを渡す必要があるか?
- どのテストファイルに問題を起こしている
-
インストールして移行:
- インストール:
npm i @total-typescript/shoehorn -
asアサーションを含むテストファイルを検索:grep -r " as [A-Z]" --include="*.test.ts" --include="*.spec.ts" -
as TypeをfromPartial()に置き換える -
as unknown as TypeをfromAny()に置き換える -
@total-typescript/shoehornからインポートを追加 - 型チェックを実行して確認
- インストール:
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mattpocock
- リポジトリ
- mattpocock/skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/mattpocock/skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。