【发布时间】:2018-04-01 15:57:59
【问题描述】:
我创建了一个 Mycalculator 类,该类实现了以下 Calculator Interface 作为方法链接。
interface Calculator {
add(a: number): void
sub(a: number): void
div(a: number): void
mul(a: number): void
display(decimalToDisplay: number): void
allClear(): void
reset(value: number): void
}
class MyCalculator implements Calculator {
private _current: number;
constructor(public value: number) {
this._current = value
}
add(a: number): MyCalculator {
this.current += a
return this
}
sub(a: number): MyCalculator {
this.current -= a
return this
}
div(a: number): MyCalculator {
this.current /= a
return this
}
mul(a: number): MyCalculator {
this.current *= a
return this
}
get current (): number {
return this._current
}
set current (result: number) {
this._current = result
}
reset (value: number) {
this.current = value
return this
}
display(decimalToDisplay: number = 2): MyCalculator {
console.log(this.current.toFixed(decimalToDisplay))
return this
}
allClear(): MyCalculator {
this.current = 0
return this
}
}
// Test
new MyCalculator(3).add(5).mul(5).div(3).div(3).display() // 4.44
new MyCalculator(5).add(5).mul(5).div(5).display().allClear().reset(5).add(5).display() // 10.00, 10.00
在上面的代码中,我有一些问题
- 每个方法都可以在没有
return this的情况下允许方法链接吗? - 如果不是,您能告诉我更改方法的正确方法是什么吗?
- 如果没有,如何在接口中声明add、sub、div、mul方法返回Mycalculator类型?
感谢您的帮助!
【问题讨论】:
-
您可以在接口中使用“this”作为返回类型。
-
除了
return this,您还可以return一个新实例。 -
@Vayrax 它有效!谢谢
-
你可以考虑让你的方法和_current变量
static。这样,您不必创建new MyCalculator()实例来调用方法。
标签: javascript typescript oop method-chaining