物件簡化為介面一致性
在 TypeScript 中,介面定義物件屬性的契約,而類別則實作該介面。然而,通常會遇到具有介面中定義之外的附加屬性的對象,這在使用 JSON.stringify() 等將物件轉換為 JSON 的工具時可能會帶來挑戰。
為了解決這個問題,有必要減少一個對象,使其僅包含其實現的介面中的屬性。
問題:
嘗試使用JSON.stringify( 將具有附加屬性的物件轉換為JSON 時),額外的屬性包含在輸出中,可能會使JSON無效。
解決方案 1:
由於 TypeScript 介面沒有運作時表示,因此不能用於強制執行財產限制,需要一種解決方法。透過將介面定義為類,我們可以使用像 Lodash 這樣的庫從目標物件中僅選取介面中定義的屬性。
例如:
<code class="typescript">import _ from 'lodash'; const reducedObj = new MyInterface(); _.assign(reducedObj, _.pick(originalObj, _.keys(reducedObj)));</code>
此方法確保簡化的物件僅包含介面中定義的屬性。
解決方案 2:
作為另一種方法,可以手動循環目標物件的屬性,檢查每個屬性是否都存在於介面定義中。如果是,則將該屬性新增至縮減的物件中。此方法需要小心謹慎,以避免添加意外的屬性。
雖然沒有直接的方法可以強制強制屬性與 JavaScript 中的 TypeScript 介面保持一致,但這些解決方法提供了實用的解決方案來減少物件符合介面定義。
以上是我們如何減少一個物件以符合 TypeScript 中的介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!