Typescript:如何在不使用全局变量的情况下声明全局变量?

时间:2020-03-20 21:25:02

标签: typescript

我正在尝试为一些旧式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: {},
};

通过此更改,我遇到了不知道如何解决的错误。

  1. 状态有一条错误消息:状态已定义但从未使用过。
  2. SugarcubeState出现错误,提示:未定义SugarcubeState

第二个让我更困惑,因为我上面有一个接口定义。

如果我将const放在State前面,则错误会变成警告:State被分配了一个值,但从未使用过。

在我的测试中,我有这样一行:const State = (global as any).State;在修改以上内容之前,此方法工作正常,但是现在我已经更改了全局文件中的State,所以我不知道如何引用了。

我无法确定我是要完全犯错还是要进一步解决问题。如何修改全局文件中的(global as any).State,使其不再使用any,但它仍然是全局变量?

0 个答案:

没有答案
相关问题