我无法弄清楚如何将MongoDB的Db
类型的属性添加到Node的Global接口。这是我现在拥有的:
// file vendor.d.ts
/// <reference types="mongodb" />
declare namespace NodeJS{
interface Global {
db: Db
}
}
我收到以下编译错误:
vendor.d.ts(5,9): error TS2304: Cannot find name 'Db'.
如果我将类型更改为string
甚至Buffer
,则不会出现错误。另外,我可以很好地访问其他代码中的Db
类型。我做错了什么?
答案 0 :(得分:2)
这是因为你错误地使用了mongodb类型的声明
试试这个
import {Db} from 'mongodb';
declare global {
namespace NodeJS {
interface Global {
// Always name constructors with an initial capital letter.
Db: typeof Db;
}
}
}
请注意,通过添加顶级import
,我们更改了导入文件的源类型/目标,使其成为模块。这也是必要的declare global
块包装声明的必要条件。在模块内部,所有声明都以词法范围限定为模块主体。引入了declare global
语法,以便从模块中修改 ambient 全局范围。
因为它现在是一个模块,它还会更改文件中任何代码其他代码的语义,因此我建议您将其移出 vendor.d.ts 。
例如,您可以创建一个名为 augmentations.d.ts 的文件,并将其放在项目的根目录中。