Я пытаюсь изменить объявление 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
?