好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

typescript 中的 this 类型

typescript中,this 也是一种类型,一个计算器的例子:

 class Counter{
  constructor(public count:number  = 0 ){}

  add(value:number){
      this .count +=  value
      return   this  
  }

  subtract(value:number){
      this .count -=  value
      return   this  
  }
}

let counter  =  new  Counter(10 )
console.log(counter.count)   //   10 
counter.add(2).subtract(3 ) 
console.log(counter.count)   //   9 

这里 this 指的是实例对象,每个方法都返回 this 类型时,我们就可以通过链式调用的形式来使用这些方法。

 

上面的类使用了 this 类型,你可以继承它,新的类可以直接使用之前的方法,不需要做任何的改变。

 class PowerCounter extends Counter{
  constructor(public count:number){
    super(count)
  }

  pow(value:number){
      this .count =  this .count **  value
      return   this  
  }
}

let powcounter  =  new  PowerCounter(2 )
powcounter
.pow( 3 )
.add( 3 )
.subtract( 1 )

console.log(powcounter.count)   //   10 

PowerCounter 继承了 Counter,本身只定义了 pow 这个实例方法,但是因为返回了  this 类型,所以可以使用父类中的方法。

 

在对象中,属性值可以是一个函数,函数内访问 this,默认情况下是对这个对象的引用,this 类型也就是这个对象的字面量类型:

const info =  {
  name: 'Tom' ,
  getName(){
      return   this .name  //   Tom 这里的 this 类型是 {name:string, getName():string} 
   }
} 

如果显式指定了 this 类型,那么 this 的类型就改变了:

const info =  {
  name: 'Tom' ,
  getName(  this  :{age:number}){
      this   //   这里的 this 类型就是 {age: number} 
   }
} 

 

查看更多关于typescript 中的 this 类型的详细内容...

  阅读:54次