Я создаю обработчик маршрута 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
Снимок экрана req.query
intellisense
При наведении курсора мыши на параметр req
я получаю следующее значение intellisense.
Правильно ли я использую функцию расширения? Как я могу расширить тип Request
и получить intellisense для query
и params
?