如何在常量中使用接口

时间:2016-05-13 16:04:01

标签: mongoose typescript

我正在尝试使用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
        }
    }  
});

1 个答案:

答案 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中的类。