確保物件符合介面:刪除無關屬性
TypeScript 介面定義類別或物件的契約規範。然而,在實作過程中,可能會新增超出介面定義的附加屬性,從而導致不一致。解決這個問題變得至關重要,特別是當透過 angular.toJson 傳遞簡化的物件進行 RESTful 通訊時。
考慮一個帶有單一屬性測試的介面MyInterface:
<code class="typescript">interface MyInterface { test: string; }</code>
及其附加的實作property newTest:
<code class="typescript">class MyTest implements MyInterface { test: string; newTest: string; }</code>
問題:
問題:問題: >
當從像MyTest 這樣的物件分配時,我們如何確保簡化的物件僅包含MyInterface 中聲明的屬性,排除newTest?答案:
<code class="typescript">class MyInterface { test: string = undefined; }</code>
<code class="typescript">import _ from 'lodash'; const before = { test: "hello", newTest: "world"}; let reduced = new MyInterface(); _.assign(reduced , _.pick(before, _.keys(reduced))); console.log('reduced', reduced)//contains only 'test' property</code>不幸的是,僅根據介面定義在運行時直接從物件中移除無關屬性是不可行的。 TypeScript 中的介面充當設計時構造,它們的屬性在執行時不容易取得。 建議的一個潛在解決方案是將「介面」定義為類,從而提供運行時實作。這使我們能夠利用Lodash 從輸入物件中僅選擇所需的屬性:透過使用此方法,我們可以有效地提取指定的屬性,建立一個遵循介面的物件合約並準備好透過angular.toJson 進行序列化。
以上是我們如何確保物件在透過 angular.toJson 傳遞時僅包含其介面中定義的屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!