Typescript接口默认会在构造函数中被覆盖

时间:2018-04-20 14:48:39

标签: javascript typescript

我有一个具有属性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时会被覆盖,我得到一个错误:

  

键入&#39; undefined&#39;不能分配给匹配&#39; MatchMakerType&#39;。

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

1 个答案:

答案 0 :(得分:3)

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

 public readonly settings: Partial<ServerOptions> = {  }