访问 globalThis 属性时出现打字稿错误

bre*_*ter 6 javascript typescript

我正在尝试访问该globalThis属性,但收到错误:

Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature`.
Run Code Online (Sandbox Code Playgroud)
// both getting...
if (!globalThis.foo) {}

// and setting...
globalThis.foo = 'bar
Run Code Online (Sandbox Code Playgroud)

我在网上可以找到的关于此的唯一内容是指 using window,并提供支持它的声明,但不适用于 globalThis 。有人知道如何支持这个吗?

jca*_*alz 15

根据文档globalThis,看起来“正确”的方法是声明一个名为var的全局变量foo。这将添加到globalThis.

如果您的代码在全局范围内,那么这将起作用:

var foo: string;
Run Code Online (Sandbox Code Playgroud)

如果您的代码位于模块中,则需要将其包装在global声明中:

export const thisIsAModule = true; // <-- definitely in a module

declare global {
    var foo: string;
}
Run Code Online (Sandbox Code Playgroud)

之后,您应该能够globalThis.foo根据需要访问:

globalThis.foo = "bar"; // no error
Run Code Online (Sandbox Code Playgroud)

Playground 代码链接