Typescript 如何在Deno中定义全局变量?
我不熟悉Deno和TypeScript,但有很多使用NodeJs和Javascript的经验,我偶然发现了一个排序问题,我可以通过简单地将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
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
,它相当于nodeglobal.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();