首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当两个对象的键名不同时,TypeScript对象类型转换

当两个对象的键名不同时,TypeScript对象类型转换
EN

Stack Overflow用户
提问于 2021-11-30 08:53:54
回答 1查看 410关注 0票数 0

以前可能有人问过这个问题,但我遇到了一种情况,即我有一个对象类型,我的后端希望这样做:

代码语言:javascript
复制
type TagTypeThatMyBackendWants = {
    id: string;
    name: string;
}

它由两个字符串类型键组成,键名为id和name。我从后端获取这些类型的标记对象,我的后端也期望这些对象返回。现在,问题是我使用的是一个处理这些标记的库,但是库希望对象看起来如下所示:

代码语言:javascript
复制
type TagTypeThatALibraryWants = {
    id: string;
    text: string;
}

因此,它基本上是同一个对象,但是库需要一个带有字符串类型的文本键,而不是一个具有字符串类型的名称键。我已经通过来回进行一些定制映射来解决这个问题,但是这提出了一个问题,如果有一种“官方”的或者推荐的方法来做类似这样的事情,比如从一种对象类型转换到另一种对象类型,并且能够告诉TypeScript名称键“映射”到文本键,反之亦然。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-30 09:03:11

不要想得太多:

代码语言:javascript
复制
function backendToLibrary(input: TagTypeThatMyBackendWants): TagTypeThatALibraryWants {
  return {
    id: input.id,
    text: input.name
  }
}

考虑这样的问题是很有诱惑力的,特别是如果您需要多次这样做并思考:也许这里有一个抽象。

但是最终您知道属性映射的方式,所以如果要使用/编写一个泛型映射实用程序,您仍然需要为每个特定情况配置这个实用程序,最终会产生一些更复杂的东西,如果您真的为每种情况写出它的话。

除非我错过了用例,否则我不认为做更复杂的事情有什么好处。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70166616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档