Как правильно выполнить объединение объявлений для `express .Response` с выводом типа - PullRequest
1 голос
/ 25 мая 2020

Я пытаюсь изменить объявление Response.locals, чтобы добиться дополнительной безопасности типов. Следуя ответу на аналогичный вопрос , я добавил в свой проект следующее index.d.ts:

import * as express from "express";

interface Locals {
  someData: string
}

declare module "express" {
  export interface Response {
    locals: Locals;
  }
}

Это работает очень хорошо при следующем использовании:

app.post("/somePath", (req, res: express.Response) => {
  // res.locals has type `Locals` here
});

Но если я не укажу явно тип res, компилятор, похоже, выведет другой тип для Response, где Response.locals имеет тип any снова

app.post("/somePath", (req, res) => {
  // oops, res.locals has type `any` here
});

оставив все место для опечаток (скажем, somedata вместо someData), я изначально хотел избежать, используя Typescript.

Что не так с моим расширением интерфейса Response?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...