我正在尝试为一些旧式JavaScript代码编写一些单元测试,并且我希望这些单元测试使用TypeScript,以便我可以具有某种类型的安全性。我在测试运行前通过加载全局文件来实现这一目标。看起来像这样:
(global as any).setup = {};
(global as any).State = {
variables: {},
};
这很好用,但是我不喜欢在那里使用any
的方式,我想改用实型。这是我这样做的尝试:
/* eslint-disable @typescript-eslint/no-explicit-any */
console.log("global");
(global as any).setup = {};
interface SugarcubeVariables {
}
interface SugarcubeState {
variables: SugarcubeVariables;
}
State: SugarcubeState = {
variables: {},
};
通过此更改,我遇到了不知道如何解决的错误。
第二个让我更困惑,因为我上面有一个接口定义。
如果我将const
放在State前面,则错误会变成警告:State被分配了一个值,但从未使用过。
在我的测试中,我有这样一行:const State = (global as any).State;
在修改以上内容之前,此方法工作正常,但是现在我已经更改了全局文件中的State,所以我不知道如何引用了。
我无法确定我是要完全犯错还是要进一步解决问题。如何修改全局文件中的(global as any).State
,使其不再使用any
,但它仍然是全局变量?