Как указать конкретный тип для JSON в typescript?

Рейтинг: 0Ответов: 1Опубликовано: 12.01.2023

Мой сервис принимает месседжи - которые являются JSONом с конкретным типом. Как я могу указать это?

export interface IBody {
   color: string;
   name: string;
   isPopular: boolean;
}

export interface IRequest {
  id: string;
  body: JSON<IBody>.  // <- вот здесь ошибка
} 

server.listen((message: IRequest) => {}, port);

вот код как я пробую, но получаю ошибку - "Type 'JSON' is not generic."

Как можно указать что поле является JSON строкой - которая является засериализированным конкретным интерфейсом?

Ответы

▲ 0

Вы можете указать, что поле строка, а после парса указать ей нужный тип.

export interface IBody {
   color: string;
   name: string;
   isPopular: boolean;
}

export interface IRequest {
  id: string;
  body: string;
} 

server.listen((message: IRequest) => JSON.parse(message.body) as IBody, port);