网站搜索

typescript - 虽然使用 global.d.ts 修改了 global,但属性 'users' 在类型 'Global & typeof globalThis' 上不存在


我正在尝试在一个项目中开发,我需要包含可以从任何地方访问的全局变量。通常,在 JavaScript 中,我可以这样写:global.users={},但在 TypeScript 中并不那么容易,因此,我需要修改 global 变量的接口。经过一些研究后,我尝试在 global.d.ts 中包含以下代码:

// global.d.ts

declare module NodeJS  {
    interface Global {
        users: {[key: string]: import("./src/server/classes/User").User}
    }
}

这实际上使 VS Code 的 Intellisense 错误消失了,但当我运行 ts-node 时,错误又出现了:

TSError: ⨯ Unable to compile TypeScript:
src/server/index.ts:22:8 - error TS2339: Property 'users' does not exist on type 'Global & typeof globalThis'.

global.users = {};

答案#1

我尝试按照 https://bobbyhadz.com/blog/typescript-declare-global-variable 来做。使用模块格式(declare global { var users: ... })对我不起作用,但非模块的 global.d.ts 可以:

declare var users: ...

确保你的 global.d.ts 中没有任何 import 或 export 语句。不过,你使用的那种 import() 类型表达式是可以的。