Я просто изучаю TypeScript сам, поэтому, возможно, в этом ответе есть место для улучшения, но вот он:
Я думаю, что вам нужно сделать увеличение с express-serve-static-core
, а не express
(по крайней мере, я не мог заставить его работать).
Другое дело, что я не знаю другого способа увеличения express
, кроме экспорта его обратно из express-formater
.Согласно TypeScript handbook , express-formater
является модульным плагином, поэтому я искал moment-range
подходящий шаблон для использования здесь, но безуспешно.
Соответствующий код:
express-formater.ts
import core from "express-serve-static-core";
import express from "express";
declare module "express-serve-static-core" {
export interface Response {
respondWith: (p1: any) => Response;
}
}
express.response.respondWith = function(data: string) {
return this.json({
error: null,
data: data
});
};
export default express;
Основные index.ts
:
import express from "./express-formater";
const app = express();
const port = 8080;
app.get("/", (req, res) => res.respondWith({ ok: true }) );
app.listen(port, () =>
console.log(`Typescript app listening on port ${port}!`)
);
Обновленные коды и box .tsconfig.json
нужно "esModuleInterop": true
.
ОБНОВЛЕНИЕ
Просто еще раз проверили, что нет необходимости экспортировать express
обратно из express-formater
.Просто как напоминание для себя, улучшенный подход:
express-formater.ts
import core from "express-serve-static-core";
import express from "express";
declare module "express-serve-static-core" {
export interface Response {
respondWith: (p1: any) => Response;
}
}
express.response.respondWith = function(data: string) {
return this.json({
error: null,
data: data
});
};
Основной index.ts
:
import express from "express"
import "./express-formater";
const app = express();
const port = 8080;
app.get("/", (req, res) => res.respondWith({ ok: true }) );
app.listen(port, () =>
console.log(`Typescript app listening on port ${port}!`)
);
Обновлен codesandbox .