2016-08-08 12 views
4

どのように私はこのC#のモデルを定義するために活字体インターフェイスを実装する必要があります。TypeScriptのC#辞書?

public class PageModel 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public IDictionary<string, FieldModel> Fields { get; set; } 
} 

public class FieldModel 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public string Type { get; set; } 
    public string DataType { get; set; } 
    public string DefaultValue { get; set; } 
} 
+0

重複http://stackoverflow.com/questions/15877362/declare-and-initialize-a-dictionary-in-typescript – Kalten

答えて

9

だけ、その後のインターフェイスを探しているなら:

interface PageModel { 
    Id: number; 
    Name: string; 
    Fields: { [key: string]: FieldModel }; 
} 

interface FieldModel { 
    Id: number; 
    Name: string; 
    Type: string; 
    DataType: string; 
    DefaultValue: string; 
} 

をいくつかの相違点:

  1. Javascriptがノーを持っていますlong/integer/doubleの概念で、すべて数値です。
  2. jsオブジェクト表記法では、キーは文字列のみです。タイプコピーでは、これらはIndexable Types
  3. と呼ばれます。クラス内でget/setを使用しても、インターフェイスにはそれがなく、プロパティのみを定義できます。
+0

はなぜ 'interface'なく' class'を使うのか? – fuzz

+1

@fuzz(メソッドなしの)データを含むオブジェクトだけを探しているなら、javascriptオブジェクトはクラスよりも優れたオプションです。このjsオブジェクトの外観を記述するインタフェースを使用しています。 –