我构建了一个接口,它接受所有可能的搜索条件,然后将其传递给一个服务,该服务将把所有值放入服务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;
    }  ...

最佳答案

在运行时没有接口。它们只存在于静态分析中。您可以在运行时使用Object.keys() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys获取具体实例的密钥。

10-06 12:28