[英]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.