Функция рефакторинга Typescript - PullRequest
0 голосов
/ 05 февраля 2020

Я использую сонар, и я получаю запах ошибки в моем последнем случае с переменной i ++ . Мне нужно как-то реорганизовать этот код, чтобы он не был таким избыточным:

private getDetailedUsageUrl(startDate: string, endDate: string, trafficType: string){
    this.logsProvider.debugLog(this.logTag, 'getDetailedUsageUrl');

    let url = this.detailedUsageServiceUrl;
    let i = 3;

    if (startDate !== null){
      url += 'startDate=$' + i;    
      i++;    
    }

    if(endDate !== null){
      url += '&endDate=$' + i;
      i++;
    }

    if (trafficType !== null){
      url += '&trafficType=$' + i;
      i++;
    }
    return url;
  }

1 Ответ

0 голосов
/ 05 февраля 2020

Может быть, это может вам помочь?

function getDetailedUsageUrl(startDate: string | null = null, endDate: string | null = null, trafficType: string | null = null): string {
    // this.logsProvider.debugLog(this.logTag, 'getDetailedUsageUrl');
    // let url = this.detailedUsageServiceUrl;
    const url = 'http://example.com/?'
    const offset = 3;

    let para: any = {
         startDate,
         endDate,
         trafficType
    };

    para = Object.keys(para)
        .filter((key) => para[key] !== null)
        .map((key, inx) => key + '=$' + (offset + inx));

    return url + para.join('&');
}

// http://example.com/?startDate=$3&endDate=$4&trafficType=$5
console.log(getDetailedUsageUrl('a', 'b', 'c'));

// http://example.com/?endDate=$3&trafficType=$4
console.log(getDetailedUsageUrl(null, 'b', 'c'));

// http://example.com/?startDate=$3&trafficType=$4
console.log(getDetailedUsageUrl('a', null, 'c'));

// http://example.com/?startDate=$3&endDate=$4
console.log(getDetailedUsageUrl('a', 'b', null));

Детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...