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 类型的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did223493