我正在尝试使用typescript中的子对象创建一个对象。我正在尝试设置一个mongoose架构,如this question所示。
如果我将对象和子对象定义为接口,我无法在常量中使用它们,我可以设置为mongoose模式。
那么有没有办法让我不必输入整个子对象两次,一次在接口中,一次在常量中?
export interface Pizza {
flavor: String;
size: String;
}
export interface Menu {
pizza: Pizza
}
// Doesn't work
export const Menu = {
store: String,
menu: Menu
}
// Works
export const Menu = {
store: String,
menu: {
pizza: {
flavor: String,
size: String
}
}
}
// What I really want
export const Menu = new mongoose.Schema({
store: String,
menu: Menu
});
// What I'm doing right now
export const Menu = new mongoose.Schema({
store: String,
menu: {
pizza: {
flavor: String,
size: String
}
}
});
答案 0 :(得分:1)
我还没有和猫鼬一起工作,但是从我所看到的,构建一个mongoose.Schema
需要真正的对象,你试图传递的是打字稿界面,直到编译之后,生成的javascript不包含它们。
也许这就是你要找的东西:
export class Pizza {
flavor: String;
size: String;
}
export class Menu {
pizza: Pizza
}
export const Menu = new mongoose.Schema({
store: String,
menu: Menu
});
我只是将你的接口转换为编译好的javascript中的类。