this ts 方法获取_TypeScript this类型_TS教程

链式调用大家一定不陌生,比如在jQuery中有广泛应用。

通过使方法返回当前对象 (也就是this) 就能够创建链式调用功能。

看如下代码实例:export default class BasicCalculator {

public constructor(protected value: number = 0) { }

public currentValue(): number {

return this.value;

}

public add(operand: number) {

this.value += operand;

return this;

}

public subtract(operand: number) {

this.value -= operand;

return this;

}

public multiply(operand: number) {

this.value *= operand;

return this;

}

public divide(operand: number) {

this.value /= operand;

return this;

}

}

然后引入此模块,通过链式调用实现相关计算功能:import calc from "./BasicCalculator";

let v = new calc(2)

.multiply(5)

.add(1)

.currentValue();

通过链式方式连续不断的调用相关方法,实现方式就是各个方法返回this(也就是对象本身)。

下面再来看一段代码实例:import BasicCalculator from "./BasicCalculator";

export default class ScientificCalculator extends BasicCalculator {

public constructor(value = 0) {

super(value);

}

public square() {

this.value = this.value ** 2;

return this;

}

public sin() {

this.value = Math.sin(this.value);

return this;

}

}

ScientificCalculator继承BasicCalculator类。

在之前,BasicCalculator的方法返回this, 返回值类型被推断为BasicCalculator,如果在ScientificCalculator的实例上调用属于 BasicCalculator的方法,将会报错。

代码如下:import calc from "./ScientificCalculator";

let v = new calc(0.5)

.square()

.divide(2)// 返回值类将被推断为BasicCalculator

.sin() // 将会报错,因为BasicCalculator类不具有此方法

.currentValue();

在之前,代码将会报错,TypeScript1.7增加了this类型,那么divide()返回值类型将会被推断为this类型。

前面其实展现了this类型的多态,不但可以是父类类型,也可以是子类类型,也可以是实现的接口类型。

this 类型在描述一些使用了 mixin 风格继承的库 (比如 Ember.js) 的交叉类型:interface MyType {

extend(other: T): this & T;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值