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:镜像类型以切断依赖

评论

支持 Markdown