首页 > 解决方案 > 如何组合两个接口并使其所有字段可选?

问题描述

我有两个无法修改的接口:

interface Person {
  name: string;
  age: number;
}
interface User {
  username: string;
  password: string;
}

我想将它们组合成一个:Player

// please, modify this code accordingly

interface Player extends Person, User {
  device: string
}

wherenameage是可选的。

所以,如果我这样做:

const member: Player = {
  username: 'bill.gates',
  password: 'M1cRoS0ft',
  device: 'PSP',
}

然后我没有收到错误,因为:name并且age丢失了。

在这里你有操场

谢谢!

标签: javascriptreactjstypescript

解决方案


您可以使用本机实用程序类型Partial<T>来构造一个接口,其中它的属性是可选的,然后从它扩展。

这将给出以下代码:

interface Person {
  name: string;
  age: number;
}

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

interface Player extends Partial<Person>, User {
  device: string;
}

const member: Player = {
  username: 'bill.gates',
  password: 'M1cRoS0ft',
  device: 'PSP',
}

游乐场链接


推荐阅读