在构造函数中使用属性创建类时出错

时间:2019-12-18 14:33:39

标签: javascript node.js typescript

我创建了此类:

export class ModelTransformer {
  constructor(private readonly hostelTransformer: HostelTransformer) {}

  static transform(hostel: Hostel): Hotel {
    return hostelTransformer.transform(hostel);
  }
}

但是当我编译它时,会出现以下编译错误:

  

错误TS2304:找不到名称“ hostelTransformer”。

我也尝试过

 static transform(hostel: Hostel): Hotel {
        return this.hostelTransformer.transform(hostel);
      }

但随后出现错误:

error TS2339: Property 'hostelTransformer' does not exist on type 'typeof ModelTransformer'.

1 个答案:

答案 0 :(得分:1)

您不能在静态方法内访问 instance 属性。

在构造函数中使用private readonly hostelTransformer: HostelTransformer时,它会在ModelTransformer类的实例上进行。像这样

constructor(hostelTransformer) {
  this.hostelTransformer = hostelTransformer;
}

您不能使用return this.hostelTransformer.transform(hostel),因为transform是静态方法。调用ModelTransformer.transform()时,this将是ModelTransformer,而不是类的实例。

如果要使用该属性,则需要将方法设为非静态