簡體   English   中英

創建實例時,打字稿類裝飾器可以是可選的嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM