2016-05-13 54 views
0

我正尝试在打字稿中使用子对象创建对象。我试图建立一个猫鼬模式,如this question所示。如何在常量中使用接口

如果我将对象和子对象定义为接口,我不能将它们用于我可以设置为猫鼬模式的常量中。

所以有没有办法让我不必输入整个子对象两次,一次在接口中,一次在常量中?

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

代码中也有'Menu's。你希望它是一个接口或变量/常量? –

+0

@NitzanTomer我只是让他们在那里比较,说明我想要什么,我必须使用什么。我想在const中使用接口或实现相同事物的方法。 – Aarmora

回答

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类。

+0

这就是它。谢谢! – Aarmora