簡體   English   中英

如何在打字稿構造函數運行之前設置一個屬性

[英]How to set one property before typescript constructor runs

一些 JavaScript 庫和框架提供了早期綁定屬性的可能性,因此開發人員甚至可以在構造函數中使用綁定的屬性。 我需要為測試做同樣的黑客攻擊。

主要問題是該綁定屬性在構造函數中使用,我無法實例化控制器以覆蓋測試。

類的構造函數不得更改(添加新參數或其他內容),因為類的創建邏輯由框架管理,我不想向類的構造函數添加任何可選/非可選參數。

我試過這樣的事情。 沒有運氣,因為我錯過了一些東西。

function createMyController(bindProperty, ...controllerArgs) {
        let myController = Object.create(MyController);
        myController.bindProperty = bindProperty;
        MyController.constructor.apply(myController, [...controllerArgs]);
        // post creation assignments or modifications
        return myController;
    }

Typescript 構造函數允許使用參數屬性來完成此操作。

這種類型的綁定稱為預綁定,例如在 angularjs (angular 1) 中使用過。 這種預綁定背后的想法是在調用構造函數之前啟動一些屬性。

它可以通過首先啟動某種類型的對象來解決。 然后綁定所有需要的值。 最后調用構造函數本身。

function createMyController(bindProperty, ...controllerArgs) {
    let myController = Object.create(MyController.prototype);
    myController.bindProperty = bindProperty;
    MyController.call(myController, ...controllerArgs);
    // post creation assignments or modifications
    return myController;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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