相关疑难解决方法(0)

在TypeScript中创建一个全局变量

在JavaScript中,我可以这样做:

 something = 'testing';
Run Code Online (Sandbox Code Playgroud)

然后在另一个文件中:

 if (something === 'testing')
Run Code Online (Sandbox Code Playgroud)

它将something被定义(只要它们以正确的顺序被调用).

我似乎无法弄清楚如何在TypeScript中做到这一点.

这就是我尝试过的.

在.d.ts文件中:

interface Window { something: string; }
Run Code Online (Sandbox Code Playgroud)

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

 window.something = 'testing';
Run Code Online (Sandbox Code Playgroud)

然后在另一个文件中:

 if (window.something  === 'testing')
Run Code Online (Sandbox Code Playgroud)

这很有效.但我希望能够失去window.它的一部分,让我的something全球化.有没有办法在TypeScript中做到这一点?

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

typescript

64
推荐指数
9
解决办法
9万
查看次数

类型“typeof globalThis”没有索引签名

每当我尝试在 TypeScript 环境中向全局 Nodejs 全局 namspace 添加函数时,都会收到此错误。

元素隐式具有“any”类型,因为类型“typeof globalThis”没有索引签名

声明全局命名空间

declare global {
  namespace NodeJS {
    interface Global {
      signin(): string[]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

所以如果我尝试这个

global.signin = () => {}
Run Code Online (Sandbox Code Playgroud)

它返回一个

元素隐式具有“any”类型,因为类型“typeof globalThis”没有索引签名

node.js typescript microservices

62
推荐指数
6
解决办法
5万
查看次数

在node.js中扩展TypeScript Global对象

我有一个node.js应用程序,它将一些配置信息附加到global对象:

global.myConfig = {
    a: 1,
    b: 2
}
Run Code Online (Sandbox Code Playgroud)

TypeScript编译器不喜欢这个,因为该Global类型没有名为的对象myConfig:

TS2339:"全局"类型中不存在属性"myConfig".

我不想这样做:

global['myConfig'] = { ... }
Run Code Online (Sandbox Code Playgroud)

如何扩展Global类型以包含myConfig或仅告诉TypeScript闭嘴并信任我?我更喜欢第一个.

我不想改变里面的声明node.d.ts.我看到了这个SO帖子并尝试了这个:

declare module NodeJS  {
    interface Global {
        myConfig: any
    }
}
Run Code Online (Sandbox Code Playgroud)

作为扩展现有Global界面的一种方式,但它似乎没有任何影响.

global node.js typescript

46
推荐指数
7
解决办法
3万
查看次数

如何解决 TypeScript 编译器错误“命名空间‘NodeJS’没有导出成员‘Global’”?

问题:如何解决 Typescript 编译器 ( tsc) 错误“命名空间 'NodeJS' 没有导出成员 'Global' ”?

在运行时tsc,我突然在“遗留”(不是新)项目中看到以下错误:

node_modules/expect/node_modules/@jest/types/build/Global.d.ts:85:62 - error TS2694: Namespace 'NodeJS' has no exported member 'Global'.

85 export interface Global extends GlobalAdditions, Omit<NodeJS.Global, keyof GlobalAdditions> {
                                                                ~~~~~~
Run Code Online (Sandbox Code Playgroud)

我尝试添加安装@types/node并添加"types": ["node"]到我的tsconfig(如this SO post中所建议的),但这没有帮助。

节点版本:12.18.4
Jest 版本:26.5.3

javascript node.js tsc jestjs

7
推荐指数
2
解决办法
8072
查看次数

标签 统计

node.js ×3

typescript ×3

global ×1

javascript ×1

jestjs ×1

microservices ×1

tsc ×1