如何使用typescript中的接口映射DTO?

如何使用typescript中的接口映射DTO?,typescript,dto,Typescript,Dto,我试图在typescript中实现morphism/DTO映射概念 为了给一个关于态射概念的简要概述,态射是指从一个数学结构到另一个数学结构的结构保持映射。 源X和目标Y的态射f写为f:X→ Y 更多关于 我试图使用严格的态射模式,以通用的方式对复杂类型的对象(即包含另一个对象和对象数组的对象)进行源到目标的映射。请参考下面提供的链接,以获取更多关于morphism npm包的信息。 我的界面 interface IFoo { k

我试图在typescript中实现morphism/DTO映射概念

为了给一个关于态射概念的简要概述,态射是指从一个数学结构到另一个数学结构的结构保持映射。 源X和目标Y的态射f写为f:X→ Y

更多关于

我试图使用严格的态射模式,以通用的方式对复杂类型的对象(即包含另一个对象和对象数组的对象)进行源到目标的映射。请参考下面提供的链接,以获取更多关于morphism npm包的信息。

我的界面

            interface IFoo {  
                  keyA: {
                  key1: number,
                  key2: number,
                  key3: [
                    {
                      key3A: string,
                      key3B: number
                    }
                  ],
                  key4: string
                },
                keyB: string,
                keyC: number,
                keyD: {
                  key1: string,
                  key2: {
                    key2A: string
                  },
                  key3: string
                },
                keyE: string
            }


            const schema: StrictSchema<IFoo> = 
            {  keyA: {
                  key1: 'somepath',
                  key2: 'somepath',
                  key3: [
                    {
                      key3A: 'somepath',
                      key3B: 'somepath'
                    }
                  ],
                  key4: 'somepath'
                },
                keyB: 'somepath',
                keyC: 'somepath',
                keyD: {
                  key1: 'somepath',
                  key2: {
                    key2A: 'somepath'
                  },
                  key3: 'somepath'
                },
                keyE: 'somepath'
            };

        const target = morphism(schema, someSourceObject);
接口IFoo{
凯亚:{
关键1:数字,
键2:数字,
关键3:[
{
键3a:字符串,
键3B:数字
}
],
键4:字符串
},
键B:字符串,
键C:数字,
关键字:{
键1:字符串,
关键2:{
键2a:字符串
},
键3:字符串
},
基耶:字符串
}
常量架构:StrictSchema=
{keyA:{
键1:‘somepath’,
键2:‘somepath’,
关键3:[
{
键3a:‘somepath’,
键3B:“某个路径”
}
],
键4:‘somepath’
},
keyB:'somepath',
keyC:“somepath”,
关键字:{
键1:‘somepath’,
关键2:{
键2a:‘somepath’
},
键3:‘somepath’
},
凯伊:“某个路径”
};
const target=morphism(schema,someSourceObject);
这里,schema是我的接口的对象保留映射。我已经为每个键添加了'somepath'作为一个值,我将用实际源对象的一些实际路径来替换它。 但在这样做的同时,我得到了: 错误:预期类型来自属性“keyA”,该属性在类型“StrictSchema”上声明


所以,首先,我可以使用态射保留上面场景中的映射吗?因为我还没有使用“ScrictSchema”访问过任何这样的示例。如果是,那么如何实现?

您可以尝试使用嵌套接口或复杂接口签名实现严格模式的接口

下面是一个StackOverflow链接,介绍如何实现相同的目标:


或者,您可以在typescript()中使用不同的npm包进行域到模型的映射,如Automapper for typescript()

只是对请求的后续操作。除了建议在较小的模式中分解接口之外,我还实现了从模式创建复杂对象的功能。可在的最新版本中获得


下面是一个和

尝试将您的问题简化为一个只需几个键即可重现的小示例。hi@shusson,这正是我在用层次结构映射对象时遇到的问题。我已经添加了一个对象和一个数组以使其更清晰。我的意思是降低示例的复杂性。找到一个重复性最低的例子。这样人们更容易理解和回答