Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Como ficaria esse codigo em typescript?

seria necessario criar uma interface e tipar com com todos os tipos de editora e titulo?

const email: string | string[] | QueryString.ParsedQs | QueryString.ParsedQs[] | undefined?


// Código omitido

      const { editora, titulo } = req.query;

            const busca = {};

            if (editora) busca.editora = editora;
            if (titulo) busca.titulo = titulo;


// Código omitido
3 respostas

const { editora, titulo } = req.query;

const busca: { editora?: string; titulo?: string } = {};

if (editora) { busca.editora = editora; }

if (titulo) { busca.titulo = titulo; }

Observações:

O código TypeScript usa a sintaxe de desestruturação ({ editora, titulo } = req.query) para extrair os valores de editora e titulo do objeto req.query. O objeto busca é definido com os campos editora e titulo sendo opcionais (editora?: string; titulo?: string).

tinha tentado assim antes, mas recebo os mesmos erros de tipo.

Type 'string | ParsedQs | string[] | ParsedQs[]' is not assignable to type 'string | undefined'. Type 'ParsedQs' is not assignable to type 'string'.

const { editora, titulo } = req.query;

const busca: { editora?: string | ParsedQs ; titulo?: string | ParsedQs  } = {};

if (editora) { busca.editora = editora; }

if (titulo) { busca.titulo = titulo; }

Desse jeito tirou o erro de tipos mas nao consegui importar essa "classe?interface? " ParsedQs, alguém sabe do q se trata?

solução!
import { ParsedQs } from 'qs';
const { name, email } = req.query;


    const filter: { 
      name?: string | ParsedQs[] | string[] | ParsedQs; 
      email?:  string | ParsedQs[] | string[] | ParsedQs 
    } = {};

    if (name) { filter.name = name; }
    if (email) { filter.email  = email; }

Consegui desse jeito, não sei se é a melhor forma, mas os filtros funcionaram