之前可能已經問過這個問題,但我有一個物件型別,我的后端期望它是這樣的:
type TagTypeThatMyBackendWants = {
id: string;
name: string;
}
它由兩個字串型別的鍵組成,鍵名是 id 和 name。我從我的后端獲得這些型別的標簽物件,我的后端也期望像這樣的物件回來。現在,問題是我正在使用一個處理這些標簽的庫,但該庫希望物件看起來像這樣:
type TagTypeThatALibraryWants = {
id: string;
text: string;
}
所以它基本上是同一個物件,但不是一個字串型別的名稱鍵,庫需要一個字串型別的文本鍵。我已經通過來回進行一些自定義映射來解決這個問題,但這提出了一個問題,如果有“官方”或推薦的方法來做這樣的事情 - 比如從一種物件型別轉換到另一種物件型別,并能夠告訴 TypeScript 名稱鍵“映射”到文本鍵,反之亦然。
uj5u.com熱心網友回復:
不要想太多:
function backendToLibrary(input: TagTypeThatMyBackendWants): TagTypeThatALibraryWants {
return {
id: input.id,
text: input.name
}
}
像這樣看待一個問題很誘人,特別是如果您需要多次這樣做并思考:也許這里有一個抽象。
但最終你知道屬性是如何映射的,所以如果你要使用/撰寫一個通用的映射實用程式,你仍然需要為每個特定的情況配置這個實用程式,最終會導致一些更復雜的東西,如果你只是為了每個案例。
除非我遺漏了一個用例,否則我認為做一些更復雜的事情沒有好處。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/370022.html
標籤:javascript 打字稿 铸件
上一篇:如何在陣列中傳遞函式的結果?
