以前可能有人问过这个问题,但我遇到了一种情况,即我有一个对象类型,我的后端希望这样做:
type TagTypeThatMyBackendWants = {
id: string;
name: string;
}它由两个字符串类型键组成,键名为id和name。我从后端获取这些类型的标记对象,我的后端也期望这些对象返回。现在,问题是我使用的是一个处理这些标记的库,但是库希望对象看起来如下所示:
type TagTypeThatALibraryWants = {
id: string;
text: string;
}因此,它基本上是同一个对象,但是库需要一个带有字符串类型的文本键,而不是一个具有字符串类型的名称键。我已经通过来回进行一些定制映射来解决这个问题,但是这提出了一个问题,如果有一种“官方”的或者推荐的方法来做类似这样的事情,比如从一种对象类型转换到另一种对象类型,并且能够告诉TypeScript名称键“映射”到文本键,反之亦然。
发布于 2021-11-30 09:03:11
不要想得太多:
function backendToLibrary(input: TagTypeThatMyBackendWants): TagTypeThatALibraryWants {
return {
id: input.id,
text: input.name
}
}考虑这样的问题是很有诱惑力的,特别是如果您需要多次这样做并思考:也许这里有一个抽象。
但是最终您知道属性映射的方式,所以如果要使用/编写一个泛型映射实用程序,您仍然需要为每个特定情况配置这个实用程序,最终会产生一些更复杂的东西,如果您真的为每种情况写出它的话。
除非我错过了用例,否则我不认为做更复杂的事情有什么好处。
https://stackoverflow.com/questions/70166616
复制相似问题