mirror-types について
mirror-typesは、必要な外部型だけをローカルに定義し、依存パッケージとの結合を減らすTypeScriptスキルです。外部型の変更から内部コード、アダプター、ラッパーを切り離す場合に役立ちます。
主な機能
- 01必要な外部型だけを複製
- 02依存関係との結合を軽減
- 03外部型の変更から隔離
- 04アダプターとラッパーに対応
活用シーン
- 01依存型の変更後も内部コードを維持
- 02アダプター用のローカル型を定義
- 03パッケージ型の一部だけを利用
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ marius-townhouse/ effective-typescript-skills --skill mirror-typesインストール後、Claude Code で/mirror-typesを入力して読み込まれたか確認します。
詳細
依存関係を断つための型のミラーリング
概要
外部パッケージの型に依存している場合、その型が変更されるとコードが壊れる可能性があります。型をミラーリングする、つまり外部の型のローカルコピーを作成することで、この依存関係を断てます。外部の型の一部だけが必要な場合や、外部の変更からコードを保護したい場合に便利です。
このスキルを使う場面
- 外部の型に依存している
- 外部パッケージとの密結合を避けたい
- 外部の型が頻繁に変更される可能性がある
- アダプターやラッパーを構築する
- 型が内部でのみ使用される
厳守すべきルール
依存関係を断ちたい場合は、外部の型をミラーリングしてください。必要な範囲の型だけを定義し、外部の変更の影響を受けないようにします。
例
// BAD: Direct dependency on external type
import { ExternalUser } from 'external-library';
interface MyService {
processUser(user: ExternalUser): void;
}
// If ExternalUser changes, your code breaks
// GOOD: Mirror the type
interface User {
id: string;
name: string;
email: string;
}
interface MyService {
processUser(user: User): void;
}
// Adapter converts external to internal type
function adaptExternalUser(external: ExternalUser): User {
return {
id: external.id,
name: external.name,
email: external.email,
};
}
参考資料
- Dan Vanderkam 著『Effective TypeScript』第2版
- 項目70:依存関係を断つための型のミラーリング
コメント
Markdown 対応