我有一个文件:types/express.d.ts
declare namespace Express {
export interface Response {
respondWith(data: any): Response;
}
}
,并且在app.js
Express.response.respondWith = function(data) {
return this.json({
errors: null,
data: data
});
};
如何将这两个文件正确地合并为一个“增强”?
I tried copying this almost identically。但这似乎不起作用。
答案 0 :(得分:0)
我只是在自己学习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}!`)
);
更新后的codesandbox。 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。