我一直在为我的应用程序中的所有类型和数据结构定义 TypeScript 接口,并且很快将面临将大多数数据结构复制为 Mongoose 模式定义的任务。
我想知道是否没有人制定了一个解决方案来从另一个自动生成一个?
我想避免维护本质上相同的东西的两个副本的负担。
我一直在为我的应用程序中的所有类型和数据结构定义 TypeScript 接口,并且很快将面临将大多数数据结构复制为 Mongoose 模式定义的任务。
我想知道是否没有人制定了一个解决方案来从另一个自动生成一个?
我想避免维护本质上相同的东西的两个副本的负担。
最简单的方法是使用一些易于解析的格式,并从中生成 Typescript 和 Mongoose 接口。以下是 JSON 格式的示例:
{ "name": "IThing",
"type": "interface",
"members": [
{ "name": "SomeProperty",
"type": "String" },
{ "name": "DoStuff",
"type": "function",
"arguments": [
{ "name": "callback",
"type": "function",
"arguments": [],
"return": "Number" }
] }
] }
结构,甚至标记语言都可以根据您的需要进行更改。
上面会在 TypeScript 中产生类似这样的东西:
interface IThing {
SomeProperty: String;
DoStuff(callback: () => Number)
}
这在猫鼬中:
var IThing = new Schema({
"SomeProperty": "String"
});
IThing.methods.DoStuff = function (callback) {
// TODO
};
有点晚了,但我们刚刚构建了一个工具来做到这一点,看看mongoose-tsgen。此 CLI 工具会生成一个index.d.ts
包含所有模式接口的文件,并且不需要您重写模式。每当您更改架构时,只需重新运行该工具。