繁体   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