mirror-types

📁 marius-townhouse/effective-typescript-skills 📅 10 days ago
1
总安装量
1
周安装量
#51580
全站排名
安装命令
npx skills add https://github.com/marius-townhouse/effective-typescript-skills --skill mirror-types

Agent 安装分布

mcpjam 1
openhands 1
replit 1
windsurf 1
zencoder 1

Skill 文档

Mirror Types to Sever Dependencies

Overview

When you depend on types from external packages, changes to those types can break your code. Mirroring types – creating your own local copies of external types – severs this dependency. This is useful when you only need a subset of external types or when you want to insulate yourself from external changes.

When to Use This Skill

  • Depending on external types
  • Avoiding tight coupling to external packages
  • External types might change frequently
  • Building adapters or wrappers
  • Types are only used internally

The Iron Rule

Mirror external types when you want to sever dependencies. Define only the subset you need, insulated from external changes.

Example

// 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,
  };
}

Reference

  • Effective TypeScript, 2nd Edition by Dan Vanderkam
  • Item 70: Mirror Types to Sever Dependencies