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