gpt4 book ai didi

typescript - 在 TypeScript 中创建一个全局变量

转载 作者:搜寻专家 更新时间:2023-10-30 20:28:59 24 4
gpt4 key购买 nike

在 JavaScript 中我可以这样做:

 something = 'testing';

然后在另一个文件中:

 if (something === 'testing')

并且它将定义东西(只要它们以正确的顺序被调用)。

我似乎不知道如何在 TypeScript 中做到这一点。

这是我试过的。

在 .d.ts 文件中:

interface Window { something: string; }

然后在我的 main.ts 文件中:

 window.something = 'testing';

然后在另一个文件中:

 if (window.something  === 'testing')

这行得通。但我希望能够丢失 window. 的一部分,而只是让我的 something 成为全局的。有没有办法在 TypeScript 中做到这一点?

(如果有人感兴趣,我真的想为我的应用程序设置日志记录。我希望能够从任何文件调用 log.Debug,而无需导入和创建对象。 )

最佳答案

globalThis是 future 。

首先,TypeScript 文件有两种作用域

全局范围

如果您的文件没有任何importexport,该文件将在全局范围 中执行> 其中的所有声明在该文件之外都是可见的。

所以我们会像这样创建全局变量:

// xx.d.ts
declare var age: number

// or
// xx.ts
// with or without declare keyword
var age: number

// other.ts
globalThis.age = 18 // no error

All magic come from var. Replace var with let or const won't work.

模块范围

如果你的文件有任何 importexport,这个文件将在它自己的范围内执行,我们需要通过declaration-merging .

// xx[.d].ts
declare global {
var age: number;
}

// other.ts
globalThis.age = 18 // no error

You can see more about module in official docs

关于typescript - 在 TypeScript 中创建一个全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38906359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com