我正在尝试在typescript中实现态射/DTO映射概念。
简单概述一下态射的概念,态射指的是从一种数学结构到另一种数学结构的结构保持映射。具有源X和目标Y的态射f写为f:X→Y。
有关https://en.wikipedia.org/wiki/Morphism的更多信息
我正在尝试使用态射的StrictSchema以泛型的方式进行复杂类型对象(即包含另一个对象和对象数组的对象)的源到目标的映射。请参考下面提供的链接以获得更多关于态射npm包的信息。https://github.com/nobrainr/morphism
我的界面
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‘的任何这样的例子。如果是,那是怎么做的?
发布于 2019-03-21 08:44:22
只是对请求的后续处理。除了建议将接口分解为较小的模式之外,我还实现了从模式创建复杂对象的功能。在最新版本的Morphism: 1.9.1中提供
发布于 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 )
https://stackoverflow.com/questions/54669877
复制相似问题