我正在尝试将Express
的请求
接口扩展为:
import express, { Request, Response } from 'express';
interface IRequest extends Request {
user: {
id: string;
}
}
const router = express.Router();
router.get('/', auth, async (req: IRequest, res: Response) => {
try {
const user = await User.findById(req.user.id).select('-password');
res.json(user);
} catch (e) {
console.error((e as Error).message);
res.status(500).send('Server Error');
}
});
但我得到了以下错误:
没有与此调用匹配的重载。重载1/3'(路径:PathParams,…处理程序:RequestHandler
Typescript将不允许您使用,因为即使您以这种方式键入:
router.get('/', auth, async (req: IRequest, res: Response) => {
TypeScript仍然只是假设Express将发出请求
而不是IRequest
。
但是,由于您可能正在对请求对象进行猴子式修补,因此可以使用声明合并来基本上扩充Express的“内部请求对象:
https://www.typescriptlang.org/docs/handbook/declaration-merging.html
如果您不想全局更改请求
,还可以使用断言来确保它确实是IRequest
:
router.get('/', auth, async (req: request, res: Response) => {
try {
assertIRequest(req);
const user = await User.findById(req.user.id).select('-password');
res.json(user);
} catch (e) {
console.error((e as Error).message);
res.status(500).send('Server Error');
}
});
function assertIRequest(req: Request|IRequest): asserts req is IRequest {
if (!req?.user?.id) throw new Error('Request was not an IRequest');
}
问题内容: Swift提供了编写扩展的功能。我做了很多事情,以使我的代码更易于阅读。不知道它们是否无害。我想知道,由于性能原因,仅省略扩展会更好吗? 问题答案: Apple鼓励使用扩展名。你可以阅读更多关于他们的雨燕文档上这里。
问题内容: 如果我上课: 我最初以为我可以通过添加扩展名来覆盖子类而无需子类化: 该代码不会编译,但错误说明了该函数,这很有意义。 我的问题是: 是否仍要重写特定类的功能?换句话说,在某些情况下,例如上面的示例中,我可以替换功能吗?如果没有,是否有其他解决方法或方法来实现该行为(可能声明了另一个协议,idk) 现在,我考虑得更多了,我不得不说这是不可能的,因为是什么阻止某人重写任何标准库函数? 问
问题内容: 我正在寻找一种解决方案,以快速为文件添加扩展文件属性。我检查了此链接写扩展文件属性,但是解决方案在目标c中,我需要快速解决方案。 问题答案: 这是Swift 5中可能的实现,作为的扩展,带有获取,设置,列出和删除文件扩展属性的方法。(可在编辑历史记录中找到快速2、3和4代码。) 用法示例:
这里有一个总节点noob。我一直在尝试设置示例节点应用程序,但每次尝试运行时都会出现以下错误: 节点应用程序
我试图使用graal nashorn interop来编写与Java交互的NodeJ。我从。但我不能延长课程。javascript代码是 我的错误是这似乎指向了我所引用的java代码以及javascript运行位置的类加载器问题(即两个不同的类加载器)。在使用graal/nodejs时,有没有办法做到这一点?
该扩展能根据Scrapy服务器及您爬取的网站的负载自动限制爬取速度。 设计目标 更友好的对待网站,而不使用默认的下载延迟0。 自动调整scrapy来优化下载速度,使得用户不用调节下载延迟及并发请求数来找到优化的值。 用户只需指定允许的最大并发请求数,剩下的都交给扩展来完成。 扩展是如何实现的 在Scrapy中,下载延迟是通过计算建立TCP连接到接收到HTTP包头(header)之间的时间来测量的。