MST

星途 面试题库

面试题:TypeScript接口合并的复杂场景处理

在一个大型项目中,有两个独立开发的模块`moduleA`和`moduleB`。`moduleA`定义了接口`UserInterfaceA`,有属性`id: number`和`email: string`;`moduleB`定义了接口`UserInterfaceB`,有属性`name: string`和`phone: string`。由于业务需求,需要将这两个接口合并成一个`UserInterface`,同时要保证合并后类型检查的准确性。假设这两个模块的代码不能修改,仅能在一个新的模块中进行合并操作,你该如何实现?
42.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

在TypeScript中,可以通过交叉类型来实现这个需求。以下是示例代码:

// 假设这里导入moduleA和moduleB中的接口
import { UserInterfaceA } from './moduleA';
import { UserInterfaceB } from './moduleB';

// 使用交叉类型合并两个接口
type UserInterface = UserInterfaceA & UserInterfaceB;

// 示例使用
const user: UserInterface = {
    id: 1,
    email: 'test@example.com',
    name: 'John Doe',
    phone: '1234567890'
};

在上述代码中,通过 UserInterfaceA & UserInterfaceB 这种交叉类型的方式,将 UserInterfaceAUserInterfaceB 合并成了 UserInterface,这样新的接口就同时拥有了 UserInterfaceAUserInterfaceB 的所有属性,并且能保证类型检查的准确性。