Typescript 如何在Deno中定义全局变量?

Typescript 如何在Deno中定义全局变量?,typescript,global-variables,deno,Typescript,Global Variables,Deno,我不熟悉Deno和TypeScript,但有很多使用NodeJs和Javascript的经验,我偶然发现了一个排序问题,我可以通过简单地将global添加到混合中,在NodeJs中轻松地进行排序,然而,出于某种原因,这在Deno中显示出相当困难 我想声明第一个变量,该变量应该在全球任何地方都可用,无需导入。(有点像Deno变量) 下面是我试图运行的代码示例: /// index.ts import { FirstClass } from './FirstClass.ts'; global.Fi

我不熟悉Deno和TypeScript,但有很多使用NodeJs和Javascript的经验,我偶然发现了一个排序问题,我可以通过简单地将
global
添加到混合中,在NodeJs中轻松地进行排序,然而,出于某种原因,这在Deno中显示出相当困难

我想声明
第一个
变量,该变量应该在全球任何地方都可用,无需导入。(有点像
Deno
变量)

下面是我试图运行的代码示例:

/// index.ts
import { FirstClass } from './FirstClass.ts';

global.First = new FirstClass();

await First.commit();

我将按如下方式运行此代码:
deno run index.ts

在deno中的全局对象是:
window
/
globalThis

window.First = new FirstClass();
有关TypeScript编译器错误,请参阅:


是的,它确实有效。问题是,
TypeScript
不允许您使用,因为在type
窗口
上,
首先
“不存在”。因此,
/@ts ignore
或修复您的类型,只需将所有的
.ts
文件替换为
.js
,您就会看到它是有效的。请参阅我的代码,了解如何在TypeScript中声明全局变量。但这是TypeScript的局限性,最初的答案仍然是正确的。它是全局声明的,TypeScript不能识别全局变量。这是一个TypeScript问题。这就是在Deno中声明全局变量的方式,使用
window.X
,它相当于node
global.X
。如何在TypeScript中使用全局变量是另一个问题,我已经将答案链接到了您。在JavaScript中运行它,您将看到它是在Deno中全局声明的。理想情况下使用
global.d.ts
哪个Deno还不支持,或者使用
窗口。首先
这是我为什么不使用typescript的完美示例。这是一个负担,而不是它的价值。我的deno项目完全是javascript,因此启动速度更快。Typescript是deno中最慢的东西。其他一切都在飞速发展。全局变量的用途是什么?是为了避免将该变量导入每个需要它的模块吗?我个人不使用任何全局变量。相反,我在模块中创建该变量并将其导出。然后,在所有其他需要该变量的模块中,我导入它。在如今的ES模块时代,您从拥有一个全球性的应用程序中得到了什么?
/// SecondClass.ts
export class SecondClass {
  constructor() {}
  comment() {
    console.log(First); // Should log the FirstClass
  }
}
window.First = new FirstClass();
declare global {
    var First: FirstClass
    interface Window { First: any; }
}

window.First = new FirstClass();
await First.commit();