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

Мой сервис принимает месседжи - которые являются 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 строкой - которая является засериализированным конкретным интерфейсом?


Ответы (1 шт):

Автор решения: Алексей

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

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);
→ Ссылка