2016-05-13 10 views
2

すべての潜在的な検索基準を受け入れ、すべての値をサービスURLに入れるサービスに渡すインターフェイスを構築しました。インターフェイス内のすべてのオブジェクトをループすることは可能ですか?キーと値の両方を取得できますか?私は当初、長いif ... else if ...声明書いていた私は最善の方法インターフェイス内のすべてのオブジェクトをループしてキーと値を取得できますか?

インタフェースでこれについてつもりならば、私はよく分からない(下のサンプルを。):

export interface ILegislatorSearchCriteria { 
    all_legislators?: string; 
    in_office?: string; // true false 
    party?: string; // 'R', 'D', or 'I' 
    gender?: string; // 'M' or 'F' 
    state?: string; // Two letter code 
    ... 
} 

サービス:

getLegislators(crit: ILegislatorSearchCriteria): Observable<ILegislator[]> { 
    let serviceUrl = this._legislatorUrl; 

    if (crit.all_legislators !== null) { 
     serviceUrl += '&all_legislators=' + crit.all_legislators; 
    } else if (crit.in_office !== null) { 
     serviceUrl += '&in_office=' + crit.all_legislators; 
    } else if (crit.party) { 
     serviceUrl += '&party=' + crit.party; 
    } else if (crit.gender) { 
     serviceUrl += '&gender=' + crit.gender; 
    } ... 

答えて

7

実行時にインタフェースがありません。これらは静的解析のためだけに存在します。実行時に持っている具体的なインスタンスのキーを取得することができますObject.keys()https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

+1

ああ、そのばかげたMDNサイト。私がオーストリア出身だからといって、デフォルトでドイツのサイトを提供する理由はありません;-)ヒントをお寄せいただきありがとうございます。 –

+0

しかし、あなたがXHRなどからの入力をサニタイズしてインターフェースに合うようにするのであれば、これは役に立ちません。 –

+0

申し訳ありませんが、私はあなたが何を意味するのか分かりません。 –

関連する問題