Я создаю обработчик маршрута express и хочу расширить интерфейс express.Request
, чтобы документировать, какими должны быть параметры и параметры запроса. Я хотел бы, чтобы jsdo c работал с VsCode intellisense.
Сначала я импортирую Request
и Response
из express.
/**
* @typedef {import('express').Request} Request
* @typedef {import('express').Response} Response
*/
. Затем я создаю 2 типа для params
и query
.
/**
* @typedef {{
* module: string
* }} params
*/
/**
* @typedef {{
* field: string
* skip: number
* limit: number
* }} query
*/
В качестве параметра моей функции я расширяю express Request
и переопределяю свои query
и params
.
/**
* @param {Request & {params: params, query: query}} req
* @param {Response} res
*/
async function search(req, res)
Вот где моя проблема возникает ... Я получаю intellisense только для params
, но не для query
.
Скриншот req.parmas
intellisense ![Screenshot of req.params intellisense](https://i.stack.imgur.com/zGYoj.png)
Снимок экрана req.query
intellisense ![enter image description here](https://i.stack.imgur.com/1IWGo.png)
При наведении курсора мыши на параметр req
я получаю следующее значение intellisense.
![req intellisense](https://i.stack.imgur.com/J6TRo.png)
Правильно ли я использую функцию расширения? Как я могу расширить тип Request
и получить intellisense для query
и params
?