Тип конфликта конфликт тип enum номер и номер в NestJS / ExpressJS - PullRequest
0 голосов
/ 31 октября 2018

Я бы добавил типы на свой сервер NestJS.

Я написал контроллер (маршрут для любителей Express), затем попытался указать тип для параметров:

public async getAllMessages(
  @Query('startDate', ValidateDate) startDate: string,
  @Query('endDate', ValidateDate) endDate: string,
  @Res() res: Response,
): Promise<string> {
  const data = await this.crudService.getPeriodicMessages(startDate, endDate);
  return res.status(HttpStatus.OK).send(data);
}

Здесь я добавил тип Response к res, так как я получаю это сообщение об ошибке в res.status(HttpStatus.OK).send(data).

ОШИБКА : Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures..

Я проверил, что тип ответа имеет status член типа number, а HttpStatus.OK также имеет тип enum number, так как я могу преобразовать его в number?

Я также прочитал другие темы , но не смог решить мою проблему.

1 Ответ

0 голосов
/ 31 октября 2018

В этом примере нет необходимости вводить объект ответа с помощью @Res().

Вы можете просто сделать следующее, nest автоматически обработает ответ. Код состояния http всегда будет 200 по умолчанию (201 для POST).

public async getAllMessages(@Query('startDate', ValidateDate) startDate: string,
                            @Query('endDate', ValidateDate) endDate: string): Promise<string> {
  return this.crudService.getPeriodicMessages(startDate, endDate);
}

Вам нужно только внедрить объект ответа для особых случаев, таких как динамическая установка кода ответа.

...