![](/img/trans.png)
[英]TypeScript: How to set object property in constructor (depending on object properties)
[英]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.