[英]Can typescript class decorators be optional when creating an instance?
根據Wikipedia所述,裝飾器模式使您可以使用額外的功能來裝飾類的實例,例如:
let ball = new BouncyBall(new Ball())
Ball
實例使用BouncyBall
類的額外代碼BouncyBall
。 我仍然可以得到一個普通的Ball
:
let simpleOldBall = new Ball()
現在,當我查看Class Decorators的打字稿文檔時 ,似乎所有Ball
實例都將自動用bouncyBall
代碼裝飾:
@bouncyBall
class Ball {
}
在Typescript中使用類裝飾器時,如何創建球和彈力球?
類裝飾器在類聲明之前聲明,因此適用於該類的所有實例。
在您的情況下,您可能需要研究mixins 。 這將允許這樣的事情:
type Constructor<T> = new(...args: any[]) => T;
function Bouncy<T extends Constructor<{}>>(Base: T) {
return class extends Base {
bounce() {
console.log('Bounce!');
}
}
}
class Ball {
}
const BouncyBall = Bouncy(Ball);
const bouncyBall = new BouncyBall();
bouncyBall.bounce();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.