我有一个具有属性matchMaker的接口,它看起来像这样:

export interface ServerOptions {
  matchMaker: MatchMakerType<MatchMaker>
}


然后,我有一个类,它设置了使用该接口的默认值,如下所示:

export class Server {
  public readonly settings: ServerOptions = {
    matchMaker: undefined
  }

  public constructor(options: ServerOptions) {
    this.settings = Object.assign(this.settings, options)
  }
}


创建类Server的新实例时,我希望在将选项传递给构造函数时要求为typeof MatchMaker设置matchMaker。我不想允许undefined | null或其他任何东西传递给构造函数,但是我需要有一些默认值,当我使用undefined时,它将被覆盖,但会出现错误:


  类型“未定义”不能分配给类型“ MatchMakerType”。


如何设置将被覆盖的默认设置?

最佳答案

您可以使用Partial,以允许在Server.settings中未定义的属性:

 public readonly settings: Partial<ServerOptions> = {  }

关于javascript - Typescript接口(interface)默认值,它将在构造函数中被覆盖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49944373/

10-10 08:59