MST

星途 面试题库

面试题:TypeScript中如何实现切断依赖的类型反映策略之基础应用

假设你有一个模块A,其中定义了一个类型`User`如下:`type User = { name: string; age: number; }`。在另一个模块B中,你想使用`User`类型,但又不想让模块B直接依赖模块A。请用TypeScript实现一种方法,在模块B中基于`User`类型创建新类型,同时切断这种直接依赖,简要说明你的思路及实现代码。
47.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

思路

  1. 可以使用TypeScript的类型映射(Type Mapped Types)来基于User类型创建新类型。
  2. 在模块B中,通过将User类型的属性映射到新类型,从而避免直接依赖模块A。

实现代码

在模块A中:

// moduleA.ts
export type User = { name: string; age: number; };

在模块B中:

// moduleB.ts
// 不直接引入User类型,而是基于User类型属性创建新类型
type UserLike = {
    [P in 'name' | 'age']: P extends 'name' ? string : number;
};

这里通过类型映射,手动定义了一个与User类似结构的UserLike类型,避免了对模块A中User类型的直接依赖。