TypeScript Generic of Type this

时间:2016-07-30 17:38:34

标签: javascript typescript

为什么TypeScript(2.1.0)会抱怨以下代码?

import Request from "../request/request.ts";
export default class Machine{
  private id: number;
  private url:string;
  private make:string;
  private model:string;
  private request:any;
  constructor(){
    var self = this;
    this.request = new Request<self>(this.url); //cannot find name self
  }
}

1 个答案:

答案 0 :(得分:2)

此代码行(从self更改为this):

this.request = new Request<this>(this.url);

this关键字有两种不同的含义:

  1. 运行时对this的实际引用(this.requestthis.url

  2. 指定编译的this类型(new Request<this>

  3. 你混合了这两个含义,这就是为什么它不起作用,如果你想使用self而不是this,那么你需要使用typeof

    this.request = new Request<typeof self>(this.url);