我有一个节点。js应用程序,将一些配置信息附加到global
对象:
global.myConfig = {
a: 1,
b: 2
}
TypeScript 编译器不喜欢这样,因为 Global
类型没有名为 myConfig
的对象:
TS2339:类型“Global”上不存在属性“myConfig”。
我不想这样做:
global['myConfig'] = { ... }
我如何扩展< code>Global类型以包含< code>myConfig或者只是告诉TypeScript闭嘴并相信我?我更喜欢第一个。
我不想更改node.d.ts
中的声明。我看到了这篇SO帖子,并尝试了以下操作:
declare module NodeJS {
interface Global {
myConfig: any
}
}
作为扩展现有全局
接口的一种方式,但它似乎没有任何效果。
为了避免打字稿声明如下:
TS2339:类型“Global”上不存在属性“myConfig”。
我建议定义自定义类型。我在我的项目中的< code > src/types/custom . d . ts 文件下执行此操作:
declare global {
namespace NodeJS {
interface Global {
myConfig: {
a: number;
b: number;
}
}
}
}
然后我确保 tsconfig.json
文件中的 Typescript 考虑这些:
{
...
"files": [
...
"src/types/custom.d.ts"
]
}
现在您可以安全地使用自定义属性:
console.log(global.myConfig.a);
截至<代码>node@16节点JS。全局接口已被删除,取而代之的是globalThis
。
您可以将模块文件中的新全局变量声明为:
declare global {
var NEW_GLOBAL: string;
}
在非模块文件(无顶级导入/导出)中,如下所示:
declare var NEW_GLOBAL: string;
重要说明:变量必须声明为 var
。let
或 const
变量不会显示在 globalThis
上。
我看到这个SO帖子并尝试了这个:
您可能有类似< code>vendor.d.ts的内容:
// some import
// AND/OR some export
declare module NodeJS {
interface Global {
spotConfig: any
}
}
您的文件需要清除任何根级别的导入
或导出
。这会将文件转换为模块,并将其与全局类型声明命名空间断开连接。
更多:https://basa rat . git books . io/typescript/content/docs/project/modules . html
问题内容: 我有一个node.js应用程序,该应用程序将一些配置信息附加到该对象: TypeScript编译器不喜欢这样,因为该类型没有名为的对象: TS2339:类型“ Global”上不存在属性“ myConfig”。 我不想这样做: 如何扩展类型以包含或只是告诉TypeScript关闭并信任我?我希望第一个。 我不想更改其中的声明。我看到了这样的帖子,并尝试了这个: 作为扩展现有接口的一种方
主要内容:全局对象与全局变量,__filename,__dirname,setTimeout(cb ms),clearTimeout(t),setInterval(cb ms),console,processJavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 globa
JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。 在 Node.js 我们可以直接访问到 global 的属性
问题内容: 我正在使用0.3.1-pre Node.js 这样做: 结果是 但是,在键入“全局”后在控制台中按[Tab]时。给出函数列表,包括parseInt。 那么parseInt是否是 全局 名称空间的成员? 问题答案: 显然,该对象不是浏览器中的全局对象。(根据#nodejs @ freenode中的micheil)实际上仅在内部使用。关于全球关闭的信息。 并且和所有的好友都在自己的全局。不
问题内容: 我对大规模服务器端开发还不陌生。我想使用Node.js编写服务器,但在继续前进之前,我想知道将节点扩展到每秒20个查询的一般原则是什么。 我正在编写的服务将主要是数据库的接口,以及对输入数据的身份验证和确认。 问题答案: 负载均衡 对于最简单的网站,您很可能根本不需要任何扩展。只需一个盒子就能让您覆盖。之后,您应该进行负载平衡,就像您提到的那样,每种架构几乎都是相同的(就像您所说的,您
这一章,我们将学会如何在PHP扩展中使用全局变量。 在扩展中定义全局变量 首先,我们需要在扩展的头文件中(默认是php_*.h)中定义所有的全局变量。举个例子,比如我们要定义一个无符号的long类型的全局变量,我们可以这样定义: ZEND_BEGIN_MODULE_GLOBALS(sample4) unsigned long counter; ZEND_END_MODULE_GLOBALS