首頁  >  文章  >  web前端  >  如何將 JavaScript 物件簡化為 TypeScript 中的介面屬性?

如何將 JavaScript 物件簡化為 TypeScript 中的介面屬性?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 01:55:27699瀏覽

How to Reduce a JavaScript Object to Interface Properties in TypeScript?

將 JavaScript 物件簡化為介面屬性

在 TypeScript 中,介面充當資料結構的藍圖。但是,在運行時,介面是空的,因此無法直接將物件簡化為僅包含其中定義的屬性。

實作

但是,有幾種解決方法:

使用Class

使用Class
class 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn