class 형에 아직도 약하다는 점을 깨달았다.
메서드 체이닝을 구현하는 부분에서 new
연산자로 새 class를 만들 필요가 전혀 없이
return this
로 해결이 된다는 것을 뒤늦게 깨닳음..
class Calculator {
value = 0
constructor(value: number) {
this.value = value
}
add(value: number): Calculator {
// return this 쓰세요!
return new Calculator(this.value + value)
}
subtract(value: number): Calculator {
return new Calculator(this.value - value)
}
multiply(value: number): Calculator {
return new Calculator(this.value * value)
}
divide(value: number): Calculator {
if(!value) throw new Error("Division by zero is not allowed")
return new Calculator(this.value / value)
}
power(value: number): Calculator {
return new Calculator(this.value ** value)
}
getResult(): number {
return this.value
}
}