Используйте Null вместо Undefined - PullRequest
0 голосов
/ 14 мая 2019

На Angular 7 у меня есть следующий интерфейс:

export interface Request {
  limit?: number;
  offset?: number;
}

И метод обслуживания следующим образом:

public get(request: Request): Observable<Response>> {

  const parameters = { 'limit': String(request.limit), 'offset': String(request.offset) };

  return this.httpClient.get<Response>>(`projects`, { params: parameters });

}

Из компонента, который я называю службой, следующим образом:

let request: Request = { offset: 20 };

projectService.get(request)

API возвращает ошибку:

The value 'undefined' is not valid for Limit.

Я думаю, я должен установить limit в ноль, если он не является частью запроса, верно?

Как я могуустановите undefined значения равными null, а не undefined?

Ответы [ 4 ]

1 голос
/ 14 мая 2019

Существует 3 возможности, если limit и offset являются «необязательными»:

  • ?limit=undefined&offset=20 ваш код

услуга

public get(request: Request): Observable<Response>> {
  const parameters = { 'limit': String(request.limit), 'offset': String(request.offset) };
  return this.httpClient.get<Response>>(`projects`, { params: parameters });
}

использование

let request: Request = { offset: 20 };
projectService.get(request);
  • ?offset=20

обслуживание

public get(request: Request): Observable<Response>> {
  const parameters = {};
  if (request.limit) parameters.limit = String(request.limit);
  if (request.offset) parameters.offset = String(request.offset);
  return this.httpClient.get<Response>>(`projects`, { params: parameters });
}

использование

let request: Request = { offset: 20 };
projectService.get(request);
  • ?limit=null&offset=20

сервис

public get(request: Request): Observable<Response>> {
  const parameters = { 'limit': request.limit ? String(request.limit) : 'null', 'offset': request.offset ? String(request.offset) : 'null' };
  return this.httpClient.get<Response>>(`projects`, { params: parameters });
}

использование

let request: Request = { offset: 20 };
projectService.get(request);

Используйте все, что захочет API.

1 голос
/ 14 мая 2019
let request: Request = { offset: 20, limit : null };

0 против нуля против неопределенного Just to add more fun to it

0 голосов
/ 14 мая 2019

В большинстве API параметр limit является обязательным, чтобы он мог возвращать количество элементов, которое вы запросили в качестве ограничения.Но если вы думаете, что этот API может обрабатывать ноль в качестве предельного значения, вы можете использовать троичный оператор, чтобы проверить значение request.limit, если оно не определено, тогда String(request.limit) в противном случае установите ограничение на ноль.Вы можете сделать то же самое для offset

public get(request: Request): Observable<Response>> {

  const parameters = { 'limit': request.limit ? String(request.limit) : null, 'offset': request.offset ? String(request.offset) : null };

  return this.httpClient.get<Response>>(`projects`, { params: parameters });

}
0 голосов
/ 14 мая 2019

А как же

const parameters = { 'limit': request.limit && typeof request.limit === "number" ? String(request.limit) : null, 
                     'offset': request.offset && typeof request.offset === "number" ? String(request.offset) : null };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...