【发布时间】:2017-11-15 02:25:46
【问题描述】:
当我们希望替换构造函数时,我试图了解类装饰器在 Typescript 中是如何工作的。我看过这个演示:
const log = <T>(originalConstructor: new(...args: any[]) => T) => {
function newConstructor(... args) {
console.log("Arguments: ", args.join(", "));
new originalConstructor(args);
}
newConstructor.prototype = originalConstructor.prototype;
return newConstructor;
}
@log
class Pet {
constructor(name: string, age: number) {}
}
new Pet("Azor", 12);
//Arguments: Azor, 12
一切都明白了,除了这一行:
newConstructor.prototype = originalConstructor.prototype;
我们为什么要这样做?
【问题讨论】:
-
让我们从您的代码并没有真正做到您认为的那样做开始。它不起作用。将ctor 更改为
constructor(public name: string, public age: number),然后尝试访问实例成员(name和age),您将获得undefined。检查这个问题的正确方法:stackoverflow.com/questions/39198811/… -
嗨,这段代码来自互联网,我不在乎它是否有效我只需要知道为什么我们需要这条线,因为我已经在更多示例中看到了它
标签: javascript typescript decorator