2016-05-13 4 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

В вашем коде слишком «меню». Вы хотите, чтобы это был интерфейс или переменная/const? –

+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

Смежные вопросы