通过下面的代码,我可以使短毛猫将global.expect
识别为变量
// types.d.ts
namespace NodeJS {
interface Global {
expect: any
}
}
但是,它不会自动完成任何expect()
方法。我认为是any
。
我正在尝试将其键入为预期的导入类型,但是它不起作用,这是我尝试过的方法。
import expectExport from 'expect';
namespace NodeJS {
interface Global {
expect: expectExport
}
}
我想念什么?
答案 0 :(得分:1)
在global-expect.ts
中执行以下操作:
import expectExports from "expect";
declare global {
namespace NodeJS {
interface Global {
expect: typeof expectExports;
}
}
}
global.expect = expectExports;
确保在应用程序入口点的某个位置导入/执行文件,例如index.ts
:
import "./global-expect";
然后您可以在任何地方使用它:
global.expect(...); // (property) NodeJS.Global.expect: <...>(actual: ...) => Matchers<...>
NodeJS
命名空间在global
范围内,因此必须在模块内部以这种方式声明:
declare global {
namespace NodeJS {
...
}
}
expect
界面中的Global
属性必须是 type "expect"
导出中的>,而不是其实例。因此,必须这样声明:
expect: typeof expectExports;
然后您实际上必须设置属性:
import expectExports from "expect";
...
global.expect = expectExports;
答案 1 :(得分:0)
一种简单的实现方法是在某些d.ts
文件中增加NodeJS命名空间
declare namespace NodeJS {
interface Global {
expect: typeof import("expect")
}
}
将Expect用作全局变量也很方便,因此您可以在global.d.ts
附近制作一个tsconfig.json
文件,并在其中放置声明
// global.d.ts
declare const expect: typeof import("expect");