將 JavaScript 物件簡化為介面屬性
在 TypeScript 中,介面充當資料結構的藍圖。但是,在運行時,介面是空的,因此無法直接將物件簡化為僅包含其中定義的屬性。
實作
但是,有幾種解決方法:
使用Class
使用Classclass MyInterface { test: string = undefined; }
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
然後,使用Lodash 提取所需的屬性:
Assebly運算子let reduced = {...new MyInterface(), ...test};
這會將空的「MyInterface」物件與「test」物件合併,覆寫任何重複的屬性。
為什麼要用此方法? 當使用 Angular 的「toJson」方法將資料傳送至 REST 服務時,此方法非常有用。 「newTest」屬性雖然在編譯期間無法存取,但會被「toJson」轉換,導致 REST 服務因屬性無效而拒絕 JSON。透過將物件簡化為介面屬性,僅發送預期的數據,確保與服務的正確通訊。以上是如何將 JavaScript 物件簡化為 TypeScript 中的介面屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!