Typescript:是否可以使用不带模块的`declare const`来公开全局变量

时间:2018-11-25 20:26:28

标签: typescript

我想拥有一个全局可用的变量(不导入)User,以便以后可以在任何文件中进行User.findById()

我有一个User.ts文件,其中包含: interface UserInstance{ ... } interface UserClass { findById(id:number):UserInstance ... } declare const User: UserClass

我期望在另一个文件(比如UserService.ts)中,我可以做User.findById(1)(不导入),但是我得到TS 2304: Cannot find name 'User'

我的tsconfig.json { "compilerOptions": { "module": "commonjs", "esModuleInterop": true, "target": "es6", "noImplicitAny": false, "moduleResolution": "node", "sourceMap": true, "outDir": "dist", "baseUrl": ".", "paths": { "*": [ "node_modules/*", "types/*" ] } }, "include": [ "api/**/*", "tests/**/*" ] }

User.ts位于api/models中,因此我假设TypeScript编译器在编译UserService.ts中的api/services时会看到它。

我是TypeScript的新手,是否有可能使全局变量不是来自模块?

谢谢!

2 个答案:

答案 0 :(得分:0)

您只需要export他们:export const User: UserClass,然后导入您想使用它的位置

答案 1 :(得分:0)

我正在寻找的是: declare global { const User: UserClass; }

此外,我最初将其添加到文件夹globals.d.ts的{​​{1}}中,但是根据我的types,它需要位于tsconfig.json列表中的文件夹中