9

我一直在为我的应用程序中的所有类型和数据结构定义 TypeScript 接口,并且很快将面临将大多数数据结构复制为 Mongoose 模式定义的任务。

我想知道是否没有人制定了一个解决方案来从另一个自动生成一个?

我想避免维护本质上相同的东西的两个副本的负担。

4

2 回答 2

3

最简单的方法是使用一些易于解析的格式,并从中生成 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
};
于 2012-12-19T23:52:19.710 回答
3

有点晚了,但我们刚刚构建了一个工具来做到这一点,看看mongoose-tsgen。此 CLI 工具会生成一个index.d.ts包含所有模式接口的文件,并且不需要您重写模式。每当您更改架构时,只需重新运行该工具。

于 2020-10-11T15:06:58.140 回答