关于 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