javascript - TypeScript - 将多个接口(interface)组合成一个

标签 javascript reactjs typescript

我想将几个接口(interface)组合成一个接口(interface):Member:

interface Person {
  name?: {
    firstName?: string;
    lastName?: string;
  };
  age: number;
  birthdate?: Date;  
}

interface User {
  username: string;
  email: string;
}

interface Player {
  room: number;
  group?: number;
}

我的问题是:如何通过组合上述接口(interface)创建一个新接口(interface):Member,所以我最终得到以下内容:

interface Member {
  firstName: string;
  lastName: string;
  age: number;
  birthdate?: Date;  
  username: string;
  email: string;
  room: number;
  group?: number;
}

请注意,结构发生了一些变化。例如,Person["name"] 中的字段现在直接包含在新界面的根级别。此外,这些字段现在是必填字段(之前它们是可选的)。

谢谢!

最佳答案

Person 界面变成“扁平化”界面,让我们创建一个名为 PersonName 的新界面,新界面如下所示:

interface PersonName {
  firstName?: string;
  lastName?: string;
}

然后,Person界面会变成:

interface Person {
  name?: PersonName;
  age: number;
  birthdate?: Date;
}

最后,Member 接口(interface)的定义语法如下:

interface Member extends Player, User, Omit<Person, 'name'>, PersonName  {}

所有代码:Playground

关于javascript - TypeScript - 将多个接口(interface)组合成一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59134206/

相关文章:

javascript - 您可以将 Material-UI Link 与 react-router-dom Link 一起使用吗?

javascript - Div 元素仅在点击后正确加载

javascript - 传单:如何防止 map 平移到最后绘制的标记?

javascript - 改变背景颜色 JavaScript

javascript - OWIN cookie 身份验证在客户端获取角色

javascript - 如何仅在 AngularJS ui-grid 3.0 的第一组行中显示按钮?

javascript - 不要直接改变状态。使用 setState()

reactjs - 离开 React 组件时网络摄像头不会关闭

javascript - typescript :如何定义具有许多未知键的对象

typescript - 如何将纯 JS 导入 TypeScript(无需打字)