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