簡體   English   中英

TypeScript object 類型轉換,當兩個對象的鍵名不同時

[英]TypeScript object type casting, when the two objects differ by key name(s)

以前可能有人問過這個問題,但是我有一個 object 類型,我的后端期望這樣:

type TagTypeThatMyBackendWants = {
    id: string;
    name: string;
}

它由兩個字符串類型的鍵組成,鍵名是 id 和 name。 我從我的后端得到這些類型的標簽對象,我的后端也期望像這樣的對象回來。 現在,問題是我正在使用一個處理這些標簽的庫,但該庫希望這些對象看起來像這樣:

type TagTypeThatALibraryWants = {
    id: string;
    text: string;
}

所以它基本上是相同的 object,但不是帶有字符串類型的名稱鍵,庫需要一個帶有字符串類型的文本鍵。 我已經通過來回做一些自定義映射解決了這個問題,但這提出了一個問題,如果有一個“官方”或推薦的方式來做這樣的事情 - 比如從一種 object 類型轉換為另一種,能夠告訴 TypeScript 名稱鍵“映射”到文本鍵,反之亦然。

不要想太多:

function backendToLibrary(input: TagTypeThatMyBackendWants): TagTypeThatALibraryWants {
  return {
    id: input.id,
    text: input.name
  }
}

看這樣的問題很誘人,特別是如果您需要多次這樣做並思考:也許這里有一個抽象。

但最終你知道 map 的屬性如何,所以如果你要使用/編寫一個通用映射實用程序,你仍然需要為每個特定情況配置這個實用程序,最終導致一些更復雜的事情,如果你真的只是寫出來每個案例。

除非我錯過了一個用例,否則我認為做更復雜的事情沒有好處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM