mcpField
M
mirror-types

mirror-types

github.com/marius-townhouse開発643 回インストール38 週間前に更新
リポジトリ

mirror-types について

mirror-typesは、必要な外部型だけをローカルに定義し、依存パッケージとの結合を減らすTypeScriptスキルです。外部型の変更から内部コード、アダプター、ラッパーを切り離す場合に役立ちます。

主な機能

  1. 01必要な外部型だけを複製
  2. 02依存関係との結合を軽減
  3. 03外部型の変更から隔離
  4. 04アダプターとラッパーに対応

活用シーン

  1. 01依存型の変更後も内部コードを維持
  2. 02アダプター用のローカル型を定義
  3. 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:依存関係を断つための型のミラーリング

コメント