首页 > 解决方案 > 'typeof 类型的参数' 不可分配给 'new () => 类型的参数'

问题描述

我收到以下错误

Argument of type 'typeof Settings' is not assignable to parameter of type 'new () => Settings'

在下一行

new JsonConvert().deserialize(Settings.Get(), Settings)

json2typescript的文档说我应该将 aclassReference作为第二个参数传递。他们的例子和我的一样。

这是Settings类的简化

export default class Settings {
  constructor(a: number) {
    this._a= a;
  }

  @JsonProperty('_a', Number)
  private _a: number;

  get A() {
    return this._a;
  }

  set A(newA: number) {
    this._a= newA;
  }

  static Get(): string {
    return <someJson>;
  }


  static GetObj(): Settings {
    return new JsonConvert().deserializeObject(Settings.Get(), Settings);
  }
}

标签: typescript

解决方案


deserializeObject需要一个具有不带参数的构造函数的类。

export default class Settings {
  constructor(a?: number) {
    this._a = a!;
  }

  @JsonProperty('_a', Number)
  private _a: number;

  get A() {
    return this._a;
  }

  set A(newA: number) {
    this._a= newA;
  }

  static Get(): string {
    return "{}";
  }


  static GetObj(): Settings {
    return new JsonConvert().deserializeObject(Settings.Get(), Settings);
  }
}

推荐阅读