Estoy tratando de armar un punto final simple siguiendo los documentos Fastify with Typescript aquí:
https://www.fastify.io/docs/v3.1.x/TypeScript/
export default async function foo(fastify: any) { const MyInstance = new Foo(fastify.db); app.get<{ Querystring: IQueryString, Headers: IHeaders }>( "/foo", async (request: FastifyRequest, reply: FastifyReply) => { console.log(request.query); // *prints query object* const { queryObj } = request.query; // *Gives error: Object is of type 'unknown'* const result = await MyInstance.getFoo(queryObj); reply.status(200).send(result); } ); } ¿Por qué aparece el error cuando intento acceder al objeto request.query y cómo lo soluciono?
De forma predeterminada, el tipo FastifyRequest.query de RequestQuerystringDefault asigna a unknown porque uno no puede adivinar qué atributos/tipo desea establecer para él.
Si tiene un tipo definido para la query de alguna solicitud, simplemente defina ese tipo de solicitud y utilícelo:
type MyRequest = FastifyRequest<{ Querystring: { queryObj: MyQueryObject } }>luego especifíquelo como el tipo de solicitud esperado:
async (request: MyRequest, reply: FastifyReply) => { const { queryObj } = request.query // Ok }