因为还是提案,jsconfig.json 需要设置 compilerOptions:{ experimentalDecorators: true}
// 上面是我写的
// 下面一位高人写的
function factorial() {
return (t, k, p) => {
const fn = p.value
p.value = function (...args) {
let vals = 0
for (let i = 1; i <= args[1]; i++) {
let numvals = 1
for (let j = 1; j <= i; j++) {
numvals *= j
}
vals += numvals
}
fn.call(this, vals, args[1])
}
}
}
class First{
@factorial()
getFactorial(val, num) {
let str = ''
for (let i = 1; i <= num; i++) {
if (i !== 1) str += ' + '
str += `${i}!`
}
console.log(`${str} = ` + val)
}
}
var first = new First()
first.getFactorial(0, 9)