首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在typescript中使用接口映射DTO?

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

Stack Overflow用户
提问于 2019-02-13 20:09:08
回答 2查看 5.4K关注 0票数 3

我正在尝试在typescript中实现态射/DTO映射概念。

简单概述一下态射的概念,态射指的是从一种数学结构到另一种数学结构的结构保持映射。具有源X和目标Y的态射f写为f:X→Y。

有关https://en.wikipedia.org/wiki/Morphism的更多信息

我正在尝试使用态射的StrictSchema以泛型的方式进行复杂类型对象(即包含另一个对象和对象数组的对象)的源到目标的映射。请参考下面提供的链接以获得更多关于态射npm包的信息。https://github.com/nobrainr/morphism

我的界面

代码语言:javascript
复制
            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);

在这里,schema是我的接口的对象保留映射。我已经为每个键添加了'somepath‘作为值,我将用来自实际源对象的一些实际路径来替换它。但在这样做的同时,我得到了:错误:预期的类型来自属性'keyA‘,该属性在这里的类型'StrictSchema’上声明

所以,首先,我可以使用态射在上面的场景中保留映射吗,因为我没有遇到过使用'ScrictSchema‘的任何这样的例子。如果是,那是怎么做的?

EN

回答 2

Stack Overflow用户

发布于 2019-03-21 08:44:22

只是对请求的后续处理。除了建议将接口分解为较小的模式之外,我还实现了从模式创建复杂对象的功能。在最新版本的Morphism: 1.9.1中提供

这是Github Issue和一个working repl

票数 2
EN

Stack Overflow用户

发布于 2019-02-14 13:05:10

您可以尝试使用嵌套接口或复杂的接口签名来实现严格架构的接口。

这里有一个关于如何实现相同目标的StackOverflow链接:Typescript: How do I define interfaces for nested objects?

或者,您可以在typescript中使用不同的npm包来实现域到模型的映射,如typescript的Automapper ( https://github.com/loedeman/AutoMapper )

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54669877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档