gpt4 book ai didi

typescript - 如何扩展@types/express 请求接口(interface)?

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:12 26 4
gpt4 key购买 nike

虽然人们问过类似的问题,但这些答案都不能解决我的问题。我在 TypeScript 2.9.2 中,我正在尝试将上下文对象添加到 Express Request 对象。我想在 .d.ts 文件中完成。

我目前拥有的是:express.d.ts

declare namespace Express {
interface Request {
context: any;
}
}

但是,它不会编译,因为“请求”类型上不存在“属性‘上下文’”。

在我的其他文件中,Webstorm 声称请求类型正在从正确的文件中导入。

我的印象是我可以利用声明合并而不必导入或导出类型定义。

这是不正确的吗?

最佳答案

只需稍作修改即可:

declare namespace Express {
export interface Request {
context: any;
}
}

当我们在命名空间内定义一个接口(interface)(或者,实际上,从常量到类的任何东西)时,默认情况下它仅对同一命名空间的成员可见,如 handbook 中所述.通过添加 export,我们让 TypeScript 知道这个接口(interface)必须被外部代码使用,并且它会被正确地合并到现有的声明中。

这不是真正的导出,因为它是来自模块(在顶层),因为命名空间本身是declared,而不是exported。所以你只需像往常一样从模块导入它:

import * as express from 'express';

关于typescript - 如何扩展@types/express 请求接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51086613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com