如何使用typescript中的接口映射DTO?
我试图在typescript中实现morphism/DTO映射概念 为了给一个关于态射概念的简要概述,态射是指从一个数学结构到另一个数学结构的结构保持映射。 源X和目标Y的态射f写为f:X→ Y 更多关于 我试图使用严格的态射模式,以通用的方式对复杂类型的对象(即包含另一个对象和对象数组的对象)进行源到目标的映射。请参考下面提供的链接,以获取更多关于morphism npm包的信息。 我的界面如何使用typescript中的接口映射DTO?,typescript,dto,Typescript,Dto,我试图在typescript中实现morphism/DTO映射概念 为了给一个关于态射概念的简要概述,态射是指从一个数学结构到另一个数学结构的结构保持映射。 源X和目标Y的态射f写为f:X→ Y 更多关于 我试图使用严格的态射模式,以通用的方式对复杂类型的对象(即包含另一个对象和对象数组的对象)进行源到目标的映射。请参考下面提供的链接,以获取更多关于morphism npm包的信息。 我的界面 interface IFoo { k
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,这正是我在用层次结构映射对象时遇到的问题。我已经添加了一个对象和一个数组以使其更清晰。我的意思是降低示例的复杂性。找到一个重复性最低的例子。这样人们更容易理解和回答