DEV Community

Discussion on: Type-safe API mocking with Mock Service Worker and TypeScript

Collapse
 
gregostan profile image
Gregory Staniszewski • Edited

Thanks for the article. I've got a question - Is it possible to add types for query params?

For example when we want to mock a request:

GET /customers?query=aaa
rest.get<null, CustomerSearchApi[]>('/customers', (req, res, ctx) => {
    const query = req.url.searchParams.get('query');
})
Enter fullscreen mode Exit fullscreen mode

As I understand, the 3rd generic type can be used for request params like below:

rest.get<null, CustomerSearchApi[], {id: string}>('/customers/:id', (req, res, ctx) => {
    const { id } = req.params;
})
Enter fullscreen mode Exit fullscreen mode

Thanks in advance!

Collapse
 
kettanaito profile image
Artem Zakharchenko

Hey!

Query parameters are always either a string or an array of strings. You can provide a narrower type using type casting:

const userId = req.url.searchParams.get('userId') as string
Enter fullscreen mode Exit fullscreen mode