面试题答案
一键面试思路
- 可以使用TypeScript的类型映射(Type Mapped Types)来基于
User
类型创建新类型。 - 在模块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
类型的直接依赖。