在JavaScript中,我可以这样做:
something = 'testing';
然后在另一个文件中:
if (something === 'testing')
它将定义某些东西(只要它们以正确的顺序被调用)。
我似乎不知道如何在TypeScript中做到这一点。
这就是我尝试过的。
在.d.ts文件中:
interface Window { something: string; }
然后在我的main.ts文件中:
window.something = 'testing';
然后在另一个文件中:
if (window.something === 'testing')
这是有效的。但是我希望能够丢失
窗口。
部分,只需要让我的东西成为全局的。有没有办法在TypeScript中做到这一点?
(如果有人感兴趣,我确实在尝试为我的应用程序设置日志记录。我希望能够从任何文件调用
log.Debug
,而无需导入和创建对象。)
我就是这样修复的:
步骤:
js prettyprint-override">declare global {
namespace NodeJS {
interface Global {
Config: {}
}
}
}
export default global;
"typeRoots": ["src/types/custom.d.ts" ]
console.log(global.config)
注:
>
在我的例子中,要求是在启动应用程序之前设置全局变量,并且该变量应该访问整个依赖对象,以便我们能够获得所需的配置属性。
希望这有帮助!
非常感谢。
这就是未来。
首先,TypeScript文件有两种作用域
如果您的文件没有任何导入
或导出
行,则此文件将在全局范围内执行,其中的所有声明都在此文件之外可见。
因此,我们将创建如下全局变量:
// 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
所有的魔法都来自var
。将var
替换为let
或const
将不起作用。
如果您的文件有任何导入
或导出
行,则此文件将在其自身范围内执行,我们需要通过合并声明来扩展全局范围。
// xx[.d].ts
declare global {
var age: number;
}
// other.ts
globalThis.age = 18 // no error
您可以在官方文档中查看有关模块的更多信息
在.d.ts
定义文件中
type MyGlobalFunctionType = (name: string) => void
如果在浏览器中工作,则会将成员添加到浏览器的窗口上下文中:
interface Window {
myGlobalFunction: MyGlobalFunctionType
}
NodeJS也有同样的想法:
declare module NodeJS {
interface Global {
myGlobalFunction: MyGlobalFunctionType
}
}
现在声明根变量(它将实际存在于window或global上)
declare const myGlobalFunction: MyGlobalFunctionType;
然后在一个常规的.ts
文件中,但作为副作用导入,您实际上实现了它:
global/* or window */.myGlobalFunction = function (name: string) {
console.log("Hey !", name);
};
最后,在代码库中的其他地方使用它,方法如下:
global/* or window */.myGlobalFunction("Kevin");
myGlobalFunction("Kevin");
我得到一个编译错误的代码: 我想让“match”成为一个全局变量。 我的编译错误是: “内部类TestingProgramm中的静态声明非法。匹配修饰符”static“只允许在常量变量声明中使用 在初始化期间使用静态非final变量。“ 我不知道这个错误是什么意思,也不知道如何修复它。
问题内容: 在我的android应用程序中,我需要放置可变成员id的位置。问题是,它是从在线API获取的,我需要找到一种存储/检索它的方法 我尝试将其放在自定义类中,但是问题是,如果我取消活动,它将丢失,我还知道有一种方法可以扩展应用程序。 所以我想知道存储全局变量的最佳方法是什么? 我必须实现: 将变量保存在onSaveState上 将其保存在sharepref 手动保存 手动检索 谢谢 更新:
问题内容: 我试图设置一个全局变量。就我而言,只是一个布尔标志,用于指示是否首次显示视图: 呈现视图后,我想将此标志设置为false: 然后检查它: 因此,我想创建一个全局变量。在哪里以及如何?我试过了: 在我的视图控制器领域 在我的AppDelegate.swift文件中的方法中 在班上 没运气。我收到一条错误消息 (注意:我意识到,在这个问题中,我背叛了我对Swift中如何处理范围的无知。请原
问题内容: 有没有一种方法可以在SQL Server中创建全局变量,从而即使重新启动服务器也可以保留该变量,所以我可以在函数中使用它? 我需要的示例: 除非我明确声明,否则永远不要删除此变量。 问题答案: 我想这对我来说将是最好的:
问题内容: 我有一个全局变量,需要在我的ViewController之间共享。 在Objective-C中,我可以定义静态变量,但是找不到在Swift中定义全局变量的方法。 您知道这样做的方法吗? 问题答案: 来自官方的Swift编程指南: 全局变量是在任何函数,方法,闭包或类型上下文之外定义的变量。全局常数和变量总是延迟计算的。 您可以在任何文件中定义它,也可以在任何位置访问它。因此,您可以在任
我在typescript中声明了一个全局变量,类似于:global。test=“something”我尝试这样做,我得到错误属性“test”在类型“Global”上不存在。