2016-05-13 12 views
0

私はtypescriptでサブオブジェクトを持つオブジェクトを作成しようとしています。私はthis questionに示すようなマングーススキーマを設定しようとしています。定数でのインターフェイスの使用方法

オブジェクトとサブオブジェクトをインタフェースとして定義すると、私はそれをmongooseスキーマとして設定できる定数で使用できません。

サブオブジェクト全体を2回、1回はインターフェイスで、もう1回は定数で入力する必要はありませんか?

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を構築することはあなたが合格しようとしているものを、実際のオブジェクトを必要としていないだけで、その後、コンパイルまで存在typescriptですインターフェイスですJavaScriptにはJavaScriptが含まれていません。私はコンパイルされたJavaScriptに存在しているクラスに、インターフェイスを回し

export class Pizza { 
    flavor: String; 
    size: String;  
} 

export class Menu { 
    pizza: Pizza 
} 

export const Menu = new mongoose.Schema({ 
    store: String, 
    menu: Menu 
}); 

は、たぶん、これはあなたが探しているものです。

+0

これはまさにそれでした。ありがとう! – Aarmora